0

大家好,我正在使用目录和文件计数软件..

C:\在这里,当我从中获取或搜索文件时,D:\它会抛出UnAuthorizedAccessException

我想枚举文件忽略不可访问的文件/目录

如何 ??C# Visual Studio 2008 仅适用于 .NET Framework 3.5。

我的代码

var files = FastDirectoryEnumerator.EnumerateFiles(path, "*.reg.zip", 
                 SearchOption.AllDirectories)
                .GroupBy(f => f.Name).Select(g => g.First());

Here Am Take 文件以.reg.zip

我想在我的整个计算机上搜索它.. 但是例外..

VS 2008默认用户..我试过app.manifest

    <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

但即使在SystemVolumeInformation目录中搜索时出现异常..

4

1 回答 1

0

我首先要说这不是最好的建议。然而,这是一个开始的地方。我的回答有两个:

首先,我认为您FastDirectoryEnumerator在了解项目将面临的文件系统级安全问题之前已经过早地进行了优化。因此,如果时间允许,我会推荐一个更简单的解决方案,正如@phillip 在评论中链接到的帖子中所建议的那样(UnauthorizedAccessException while getting files)。对于远程现代机器,120k 文件应该不是问题。

其次,查看速度统计数据FastDirectoryEnumerator我可以看到使用它的吸引力。稍微深入研究一下代码,我可以看到它不会以任何方式保护您免受权限异常的影响。它本质上是包装在 IEnumerable MoveNext 方法中的过程代码。MoveNext 方法本身对子目录处理进行了递归处理。

我无法测试下一点,因此您必须进行实验。如果您想破解FastDirectoryEnumerator您可能想要尝试的第一件事是try catch围绕创建新 FileData 对象的块。

public FileData Current { get { return new FileData(m_path, m_win_find_data); } }

如果这不起作用,您将不得不通过该GetNext()方法将异常捕获到正确的位置。您可能需要为FileData. 我希望这在某种程度上有所帮助。

于 2013-08-13T20:27:02.307 回答