我得到一个运行以下代码的UnautorizedAccessException:
UnautorizedAccessException
string[] fileList = Directory.GetFiles(strDir, strExt);
异常发生在c:\users\username\appdata中如何检查我是否有访问权限(列出和读取文件)?
c:\users\username\appdata
mrwjdhj31#
首先,我会手动检查权限,看看什么阻止了你,什么没有。我用这样的东西来检查权限(复制文件):
AuthorizationRuleCollection acl = fileSecurity.GetAccessRules(true, true,typeof(System.Security.Principal.SecurityIdentifier)); bool denyEdit = false; for (int x = 0; x < acl.Count; x++) { FileSystemAccessRule currentRule = (FileSystemAccessRule)acl[x]; AccessControlType accessType = currentRule.AccessControlType; //Copy file cannot be executed for "List Folder/Read Data" and "Read extended attributes" denied permission if (accessType == AccessControlType.Deny && (currentRule.FileSystemRights & FileSystemRights.ListDirectory) == FileSystemRights.ListDirectory) { //we have deny copy - we can't copy the file denyEdit = true; break; } ... more checks }
此外,还有一些奇怪的情况下,文件夹上的某个权限会更改文件的权限,而不管它们各自的权限(将看看我是否能找到它是什么)。
wljmcqd82#
检查代码项目上的文章,这是关于你需要的东西,是为此创建的类:此类的目的是为常见问题“我是否具有读或写此文件的权限?"提供简单答案。A simple way to test individual access rights for a given file and user注意:不能张贴整个代码在这里,因为它太长.
42fyovps3#
首先,调用Directory.GetFiles获取根目录。捕获UnauthorizedAccessException-如果没有,则您具有完全访问权限。如果捕获-递归调用每个子目录的函数,捕获异常,如果捕获-将这样的目录添加到列表中。编写一个递归函数,并带有禁用目录的外部列表
Directory.GetFiles
UnauthorizedAccessException
3条答案
按热度按时间mrwjdhj31#
首先,我会手动检查权限,看看什么阻止了你,什么没有。我用这样的东西来检查权限(复制文件):
此外,还有一些奇怪的情况下,文件夹上的某个权限会更改文件的权限,而不管它们各自的权限(将看看我是否能找到它是什么)。
wljmcqd82#
检查代码项目上的文章,这是关于你需要的东西,是为此创建的类:此类的目的是为常见问题“我是否具有读或写此文件的权限?"提供简单答案。
A simple way to test individual access rights for a given file and user
注意:不能张贴整个代码在这里,因为它太长.
42fyovps3#
首先,调用
Directory.GetFiles
获取根目录。捕获UnauthorizedAccessException
-如果没有,则您具有完全访问权限。如果捕获-递归调用每个子目录的函数,捕获异常,如果捕获-将这样的目录添加到列表中。
编写一个递归函数,并带有禁用目录的外部列表