在.net(c#)中检查重新分析点的最佳方法是什么?

我的function几乎是一个标准的搜索function…我已将它包含在下面。

在函数中,我有1行代码负责清除重新分配NTFS点。

if (attributes.ToString().IndexOf("ReparsePoint") == -1) 

问题是现在我收到错误Access to the path 'c:\System Volume Information' is denied.

我调试了代码,运行时该目录的唯一属性是:

  System.IO.FileAttributes.Hidden | System.IO.FileAttributes.System | System.IO.FileAttributes.Directory 

我正在Windows 2008服务器上执行此代码,任何想法我能做些什么来治愈这个失败?

 public void DirSearch(string sDir) { foreach (string d in Directory.GetDirectories(sDir)) { DirectoryInfo dInfo = new DirectoryInfo(d); FileAttributes attributes = dInfo.Attributes; if (attributes.ToString().IndexOf("ReparsePoint") == -1) { foreach (string f in Directory.GetFiles(d, searchString)) { //lstFilesFound.Items.Add(f); ListViewItem lvi; ListViewItem.ListViewSubItem lvsi; lvi = new ListViewItem(); lvi.Text = f; lvi.ImageIndex = 1; lvi.Tag = "tag"; lvsi = new ListViewItem.ListViewSubItem(); lvsi.Text = "sub bugger"; lvi.SubItems.Add(lvsi); lvsi = new ListViewItem.ListViewSubItem(); lvsi.Text = d;//"C:\\Users\\Administrator\\Downloads\\MediaMonkey.GOLD.EDITION.v.3.0.2.1134.[Darkside].[Demonoid].[Grim.Reaper]"; lvi.SubItems.Add(lvsi); listView1.Items.Add(lvi); } DirSearch(d); } } } 

除SYSTEM系统帐户外,没有人有权访问系统卷信息。 因此要么更改目录的权限。 或者更好,抓住exception并继续下去。

我不确定问题的答案是什么,但更改属性检查以使用正确的按位操作!

 if (attributes.ToString().IndexOf("ReparsePoint") == -1) 

…写得更准确……

 if ((attributes & FileAttributes.ReparsePoint) == 0) 

也许这篇文章可以帮助你(他们解释如何访问这个文件夹):

http://support.microsoft.com/kb/309531

绝望的解决方案是尝试 – 捕获。

一旦你获得了过去的权限,并且真的想要测试连接点, 这个类通过使用DeviceIoControl kernel32调用和分析重新分析点来提供测试,创建和删除连接点。