首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在.net (c#)中检查重解析点的最佳方法是什么?

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

Stack Overflow用户
提问于 2008-12-01 22:00:09
回答 4查看 5.7K关注 0票数 4

我的功能相当于一个标准的搜索功能...我已经把它包含在下面了。

在函数中,我有一行代码负责剔除Repart NTFS点。

代码语言:javascript
复制
if (attributes.ToString().IndexOf("ReparsePoint") == -1)

问题是我现在得到了一个错误的Access to the path 'c:\System Volume Information' is denied.

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

代码语言:javascript
复制
  System.IO.FileAttributes.Hidden 
| System.IO.FileAttributes.System 
| System.IO.FileAttributes.Directory

我在Windows2008服务器上执行这段代码,你知道我能做些什么来解决这个问题吗?

代码语言:javascript
复制
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);
        }
    }
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2008-12-01 22:04:59

除系统帐户外,任何人都无权访问系统卷信息。因此,要么更改目录上的权限。或者,更好地捕捉异常并继续。

票数 3
EN

Stack Overflow用户

发布于 2008-12-01 22:04:24

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

代码语言:javascript
复制
if (attributes.ToString().IndexOf("ReparsePoint") == -1)

..。更准确的写法是...

代码语言:javascript
复制
if ((attributes & FileAttributes.ReparsePoint) == 0)
票数 18
EN

Stack Overflow用户

发布于 2008-12-01 22:08:39

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

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

绝望的解决方案是try - catch。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/332397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档