类型为'System.UnauthorizedAccessException'发生在mscorlib.d

本文关键字:mscorlib System 类型 UnauthorizedAccessException | 更新日期: 2023-09-27 18:18:24

我试图在c#中创建一个简单的windows资源管理器,如treeview,但是我在运行时得到这个错误:

类型为"System"的未处理异常。unauthorizedaccesssexception '发生在mscorlib.dll

附加信息:访问路径'c:'$Recycle.Bin'S-1-5-18'被拒绝。

我使用的代码是完全相同的例子,由微软从MS树视图的例子。

为什么我得到这个错误?

类型为'System.UnauthorizedAccessException'发生在mscorlib.d

错误很明显;您的代码正试图进入一个您无法访问的目录- 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异常,捕获,并假设没有子目录。

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

相关文章: