我正在尝试在 c# 中创建一个简单的 windows-explorer,如 treeview,但是在运行时出现此错误:
mscorlib.dll 中出现“System.UnauthorizedAccessException”类型的未处理异常
附加信息:拒绝访问路径“c:\$Recycle.Bin\S-1-5-18”。
我使用的代码与 Microsoft 来自MS Tree View 示例的这个示例完全相同。
为什么我会收到此错误?
我正在尝试在 c# 中创建一个简单的 windows-explorer,如 treeview,但是在运行时出现此错误:
mscorlib.dll 中出现“System.UnauthorizedAccessException”类型的未处理异常
附加信息:拒绝访问路径“c:\$Recycle.Bin\S-1-5-18”。
我使用的代码与 Microsoft 来自MS Tree View 示例的这个示例完全相同。
为什么我会收到此错误?
错误很明显;您的代码正试图进入您无权访问的目录 - 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 异常,则捕获它并假设没有子目录。
这是处理错误的基础,您可能会在应用程序中遇到其他类似的错误,比如因为用户单击了文件夹,现在它正试图显示目录的内容。