0

我一直在尝试在“我的文档”内的所有可能目录中查找文件,但由于“我的音乐”文件夹,它抛出了“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);
}
4

1 回答 1

0

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

在继续之前,您真的应该阅读这篇文章:

文件夹递归

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

编辑://

我提到重解析点是因为在 Windows 7、8 等中使用这些(AFAIK)来构成SpecialFolder对象。

例如:

"C:\Users\UserName\My Documents"是一个 NTFS 结点,它指向"C:\Users\UserName\Documents".

我觉得指出这一点很重要,因为没有明确的规则可以阻止我将 ACL 设置"C:\Users\UserName\My Documents"为禁止任何人,例如管理员"C:\Users\UserName\Documents"通过联结/符号链接访问,从而使您陷入另一个兔子洞: -)

于 2013-09-03T06:07:07.327 回答