在不获取UnauthorizedAccessException的情况下搜索文件夹中的文件

时间:2013-09-03 05:34:50

标签: c# directoryinfo

我一直在尝试在"我的文档"中的所有可能目录中查找文件,但它正在抛出" System.UnauthorizedAccessException"由于"我的音乐"文件夹中。

我想可能列出"我的文件"中的所有文件夹,然后获取"我的音乐"并将其排除在搜索之外可以解决问题,但它失败了......

所以现在我不知道如何找到特定的" .ini"文件内的所有文件夹"我的文件"没有这个例外,有人可以帮我吗? :)

我使用的代码:

DirectoryInfo dir = new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments));
foreach(FileInfo file in dir.GetFiles("*.ini", SearchOption.AllDirectories))
{
    listBox1.Items.Add(file.Name);
}

1 个答案:

答案 0 :(得分:0)

除了您当前的System.UnauthorizedAccessException之外,还有许多问题需要解决,例如“重新分析点”(硬链接,交接点,符号链接等)。

在进一步讨论之前,你真的应该阅读这篇文章:

Folder Recursion

它没有涵盖我脑海中浮现的所有问题,但文章中给出的解决方案是朝着正确方向迈出的非常好的一步,可以避免许多“未知数”。

编辑://

我提到了重新分析点,因为在Windows 7,8中使用它们(AFAIK)等构成SpecialFolder对象。

例如:

"C:\Users\UserName\My Documents"是NTFS联结,指向"C:\Users\UserName\Documents"

我认为重要的是要指出这一点,因为没有明确的规则可以阻止我在"C:\Users\UserName\My Documents"上设置ACL以禁止任何人,但管理员通过交汇点访问"C:\Users\UserName\Documents" /符号链接,因此送你另一个兔子洞: - )