Tag: reparsepoint

在.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)) { […]

使用.Net 3.5中的GetDirectories()识别错误的ReparsePoints?

我正在使用带有Linq语句的Directory.GetDirectories()来遍历文件夹中不是系统文件夹的所有目录,但是我发现文件夹中有一堆坏的ReparsePoints ,这导致该方法需要很长时间因为它在每个坏的重新分析点上超时。 我目前使用的代码如下所示: subdirectories = directory.GetDirectories(“*”, SearchOption.TopDirectoryOnly) .Where(d => ((d.Attributes & FileAttributes.Hidden) != FileAttributes.Hidden) && ((d.Attributes & FileAttributes.System) != FileAttributes.System)); 我也尝试使用这样的代码进行测试,但它也会在坏文件夹中挂起一整分钟左右: foreach (var item in dir.GetDirectories(“*”, SearchOption.TopDirectoryOnly)) { Console.WriteLine(item.Name); Console.WriteLine(item.Attributes); } 应该注意的是,上面的代码在.Net 4.0中工作得很好,但在3.5中,它会在每个坏的重新分析点上挂起一分钟。 尝试在Windows资源管理器中手动打开这些文件夹会导致“找不到网络路径”错误。 是否有另一种方法可以在不使用Attributes属性的文件夹中循环遍历好的子文件夹,或绕过坏的重新分析点? 我已经尝试过使用Directory.Exists() ,这同样很慢。