我需要浏览计算机上的各种目录(通过 DirectoryInfo)。其中一些不可访问,并且发生 UnauthorizedAccessException。如何在不捕获异常的情况下检查目录访问?
问问题
15297 次
3 回答
12
您需要使用Security
命名空间。
请参阅此SO 答案。
从答案:
FileIOPermission writePermission = new FileIOPermission(FileIOPermissionAccess.Write, filename);
if(!SecurityManager.IsGranted(writePermission))
{
//No permission.
//Either throw an exception so this can be handled by a calling function
//or inform the user that they do not have permission to write to the folder and return.
}
更新:(以下评论)
FileIOPermission
处理安全策略而不是文件系统权限,因此您需要使用DirectoryInfo.GetAccessControl
.
于 2010-02-25T18:48:39.913 回答
11
简单地说,你不能。无法检查目录是否可访问,您只能确定它是否可访问。原因是一旦检查完成,权限可能会更改并使您的检查无效。您可以实施的最可靠策略是访问目录并捕获UnauthorizedAccessException
.
我最近写了一篇关于这个主题的博客文章,这里有一些细节
于 2010-02-25T18:56:22.093 回答
-1
你可以只做一个简单的小布尔函数,并让一个目录信息变量尝试从给定路径获取目录。如果没有问题,则返回 true,如果异常是句柄,则返回 false,或者将您的异常子句分解为子异常并获取错误代码。
于 2010-05-18T13:52:30.827 回答