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