我的功能是非常标准的搜索功能...我已经包括下面的。

在函数I有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 Server的机器上的代码,任何想法我能做些什么来治愈这种失败?

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帐户系统卷信息。因此,要么改变对目录的权限。或者好得多捕获异常并继续下去。

其他提示

我不知道答案的问题,但的改变你的属性检查使用正确的位操作!

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

...得多正确地写为...

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

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

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

在绝望溶液是尝试 - 捕获

一旦你过去的权限,真的想测试结点,的这个类提供了用于检测,通过使用的DeviceIoControl KERNEL32呼叫和重新分析点的分析的创建和的结点删除。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top