mscorlib.dll中发生了未处理的“System.UnauthorizedAccessException”类型异常

时间:2013-06-14 23:09:20

标签: c#

我正在尝试在c#中创建一个简单的windows-explorer,例如treeview,但是我在运行时遇到了这个错误:

  

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

     

其他信息:拒绝访问路径'c:\ $ Recycle.Bin \ S-1-5-18'。

我使用的代码与Microsoft MS Tree View example中的示例完全相同。

为什么我收到此错误?

1 个答案:

答案 0 :(得分: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异常, catch 它并假设没有子目录。

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