我正在尝试在c#中创建一个像treeview这样的简单windows-explorer,但是我在运行时遇到了这个错误:
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();
Run Code Online (Sandbox Code Playgroud)
这是我怀疑你得到的错误:
try
{
subSubDirs = subDir.GetDirectories();
}
catch (System.UnauthorizedAccessException)
{
subSubDirs = new DirectoryInfo[0];
}
Run Code Online (Sandbox Code Playgroud)
这将优雅地处理无法获取特定文件夹的子项.这使用了一个try-catch声明.我们尝试获取文件夹中的目录,但是如果存在System.UnauthorizedAccessException异常,请捕获它并假设没有子目录.
这是处理错误的基础,您可能会在应用程序中遇到类似的其他错误,比如因为用户单击了文件夹,现在它正在尝试显示目录的内容.
| 归档时间: |
|
| 查看次数: |
15016 次 |
| 最近记录: |