我的功能相当于一个标准的搜索功能...我已经把它包含在下面了。
在函数中,我有一行代码负责剔除Repart 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我在Windows2008服务器上执行这段代码,你知道我能做些什么来解决这个问题吗?
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);
}
}
}发布于 2008-12-01 22:04:59
除系统帐户外,任何人都无权访问系统卷信息。因此,要么更改目录上的权限。或者,更好地捕捉异常并继续。
发布于 2008-12-01 22:04:24
我不确定这个问题的答案是什么,但请更改您的属性检查以使用正确的逐位操作!
if (attributes.ToString().IndexOf("ReparsePoint") == -1)..。更准确的写法是...
if ((attributes & FileAttributes.ReparsePoint) == 0)发布于 2008-12-01 22:08:39
也许这篇文章可以帮助你(他们解释了如何访问这个文件夹):
http://support.microsoft.com/kb/309531
绝望的解决方案是try - catch。
https://stackoverflow.com/questions/332397
复制相似问题