C# 类型为';的未处理异常;系统。未经授权的访问异常';发生在mscorlib.dll中

C# 类型为';的未处理异常;系统。未经授权的访问异常';发生在mscorlib.dll中,c#,C#,我正在尝试创建一个简单的windows资源管理器,如c#中的treeview,但在运行时遇到以下错误: mscorlib.dll中发生类型为“System.UnauthorizedAccessException”的未处理异常 其他信息:对路径“c:\$Recycle.Bin\S-1-5-18”的访问被拒绝 我所使用的代码与Microsoft的示例完全相同 为什么我会出现这个错误?错误很明显;您的代码试图跨入您无权访问的目录-c:\$Recycle.Bin\S-1-5-18目录(顺便说一句,它是本

我正在尝试创建一个简单的windows资源管理器,如c#中的treeview,但在运行时遇到以下错误:

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

其他信息:对路径“c:\$Recycle.Bin\S-1-5-18”的访问被拒绝

我所使用的代码与Microsoft的示例完全相同


为什么我会出现这个错误?

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

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

subSubDirs = subDir.GetDirectories();
这就是我怀疑您将该错误转移到以下位置的原因:

try
{
    subSubDirs = subDir.GetDirectories();
}
catch (System.UnauthorizedAccessException)
{
    subSubDirs = new DirectoryInfo[0];
}
这将很好地处理无法获取特定文件夹的子文件夹的问题。这使用了一个语句。我们尝试获取文件夹中的目录,但是如果存在System.UnauthorizedAccessException异常,则捕获它并假设没有子目录

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