问题:FileSystemRights Enum仅包含部分(但不是全部)文件系统权限,是否存在设计原因?如果是这样,我在哪里可以找到有关如何处理在检查文件\文件夹的访问权限时可能遇到的枚举中未包含的任何其他文件系统权限的说明和选项。
详细信息:使用C#获取文件\文件夹的FileSystemRights时,有时会返回FileSystemRights Enum中未包含的值。
示例,以下代码在调用FileSystemAccessRule.FileSystemRights时返回访问权限值“268435456”时将失败,因为文件系统权限枚举中当前未包含268435456。
bool access;
string NtAccountName = @"myDomain\myUserOrGroup";
NtAccountName = WindowsIdentity.GetCurrent().Name;
DirectoryInfo di = new DirectoryInfo(dir);
DirectorySecurity acl = di.GetAccessControl(AccessControlSections.Access);
AuthorizationRuleCollection rules = acl.GetAccessRules(true,true, typeof(NTAccount));
var principal = new WindowsPrincipal(WindowsIdentity.GetCurrent());
foreach (AuthorizationRule rule in rules)
{
bool isInGoup = principal.IsInRole(rule.IdentityReference.Value);
FileSystemAccessRule fsAccessRule = rule as FileSystemAccessRule;
if (fsAccessRule == null)
continue;
if (isInGoup)
{
if ((fsAccessRule.FileSystemRights & FileSystemRights.ListDirectory) > 0)
{
access = true;
}
else
{
access = false;
}
}
}