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