4

问题:FileSystemRights Enum仅包含部分而非全部文件系统权限是否有设计原因?如果是这样,我在哪里可以找到有关如何处理未包含在枚举中的任何其他文件系统权限的解释和选项,这些权限在检查文件\文件夹的访问权限时可能会遇到。

详细信息:使用 C# 获取文件\文件夹的 FileSystemRights 时,有时它会返回一个未包含在FileSystemRights Enum中的值。

例如,以下代码在调用 FileSystemAccessRule.FileSystemRights 时返回访问权限值“268435456”时将失败,因为 FileSystemRights 枚举中当前未包含 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;
                }
            }
        }
4

0 回答 0