4

我正在尝试在 c# 中创建一个简单的 windows-explorer,如 treeview,但是在运行时出现此错误:

mscorlib.dll 中出现“System.UnauthorizedAccessException”类型的未处理异常

附加信息:拒绝访问路径“c:\$Recycle.Bin\S-1-5-18”。

我使用的代码与 Microsoft 来自MS Tree View 示例的这个示例完全相同。

为什么我会收到此错误?

4

1 回答 1

8

错误很明显;您的代码正试图进入您无权访问的目录 - c:\$Recycle.Bin\S-1-5-18 目录(顺便说一下,它是本地系统的 SID)。不幸的是,这个 MSDN 示例假定您的程序可以访问每个目录,这不太现实。

您可以更改代码以优雅地处理它无权访问的目录(捕获异常并继续进行)。例如:如果我们改变这行代码示例:

subSubDirs = subDir.GetDirectories();

这是我怀疑你得到这个错误的地方:

try
{
    subSubDirs = subDir.GetDirectories();
}
catch (System.UnauthorizedAccessException)
{
    subSubDirs = new DirectoryInfo[0];
}

这将优雅地处理无法获取特定文件夹的子文件夹的问题。这使用了一个try-catch语句。我们尝试获取文件夹中的目录,但是如果存在 System.UnauthorizedAccessException 异常,则捕获它并假设没有子目录。

这是处理错误的基础,您可能会在应用程序中遇到其他类似的错误,比如因为用户单击了文件夹,现在它正试图显示目录的内容。

于 2013-06-14T23:19:12.943 回答