c# - EnumerateDirectories 即使使用 IgnoreInaccessible 属性也能捕获异常

问题描述

我试图枚举一个非常大的共享文件夹(在 DFS 根目录后面)的所有子目录。 此代码工作正常,当它尝试访问未经授权的子目录时,枚举继续:

List<string> dirs = new List<string>(Directory.EnumerateDirectories("\\mydfsshare\myrootfolder","*",new Enumerationoptions
{
    IgnoreInaccessible = true,RecurseSubdirectories = true
}));

但是对于特定文件夹,它给了我这个异常并停止枚举:

System.IO.IOException: Erreur réseau inattendue. : '\\mydfsshare\myrootfolder\Certification'
   at System.IO.Enumeration.FileSystemEnumerator`1.FindNextEntry()
   at System.IO.Enumeration.FileSystemEnumerator`1.DirectoryFinished()
   at System.IO.Enumeration.FileSystemEnumerator`1.FindNextEntry()
   at System.IO.Enumeration.FileSystemEnumerator`1.MoveNext()
   at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
   at extractAcl.Program.Main(String[] args) in Program.cs:line 58

我不被允许阅读这个文件夹,但和许多其他人一样。 IgnoreInaccessible 属性适用于许多其他未经授权的文件夹,我不明白为什么这个特定文件夹会发生异常。 如果我尝试从笔记本电脑浏览它,我会收到此消息:

first message

如果我尝试直接在文件服务器上浏览它,我会收到此消息:

second message

我想绕过这个文件夹并继续枚举

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)