我需要遍历计算机上的各种目录(通过DirectoryInfo)。其中一些不可访问,并发生UnauthorizedAccessException。如何在不捕获异常的情况下检查目录访问?

最佳答案

您需要使用Security命名空间。

请参见this 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

09-18 11:06