发生了类型为“System.UnauthorizedAccessException”的未处理异常,位于mscorlib.dll中。

4
我正在尝试在C#中创建一个类似Windows资源管理器的树形视图,但是在运行时我遇到了这个错误:
"System.UnauthorizedAccessException"类型的未处理异常在mscorlib.dll中发生 额外信息:拒绝访问路径"c:\$Recycle.Bin\S-1-5-18"
我正在使用与Microsoft的MS Tree View example示例完全相同的代码。为什么会出现这个错误?
1个回答

8
错误很明显;您的代码尝试进入您无权访问的目录 - c:\$Recycle.Bin\S-1-5-18 目录(顺带一提,这是Local System的SID)。不幸的是,这个MSDN示例假设您的程序将访问每一个目录,这并不是非常现实的。
您可以更改代码以优雅地处理它没有访问权限的目录(捕获异常并继续执行)。例如:如果我们更改此代码示例的行:
subSubDirs = subDir.GetDirectories();

这就是我怀疑你出现错误的地方:
try
{
    subSubDirs = subDir.GetDirectories();
}
catch (System.UnauthorizedAccessException)
{
    subSubDirs = new DirectoryInfo[0];
}

这将优雅地处理无法获取特定文件夹的子级时产生的问题。这使用了一个try-catch语句。我们试图获取文件夹中的目录,但如果出现System.UnauthorizedAccessException异常,则会捕获该异常并假定没有子目录。
这是处理错误的基本方法,您可能会在应用程序中遇到其他类似的错误,例如因为用户单击了文件夹,现在正在尝试显示目录的内容。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接