0

对于 FileSystemRights 类型的这种用法,值“-536805376”无效。参数名称:fileSystemRights

System.ArgumentOutOfRangeException: The value '-536805376' is not valid for this usage of the type FileSystemRights.
Parameter name: fileSystemRights
   at System.Security.AccessControl.FileSystemAccessRule.AccessMaskFromRights(FileSystemRights fileSystemRights, AccessControlType controlType)
   at System.Security.AccessControl.FileSystemSecurity.RemoveAccessRule(FileSystemAccessRule rule)
   at Program.ClearAccessRules(FileSystemSecurity fx)
   at Program.FixPermissions(String startingpoint)
   at Program.Main(String[] args)

错误代码是这个块:

        private static void ClearAccessRules(System.Security.AccessControl.FileSystemSecurity fx)
        {
            var rx = new List<System.Security.AccessControl.FileSystemAccessRule>();
            foreach (System.Security.AccessControl.FileSystemAccessRule k in fx.GetAccessRules(true, true, typeof(System.Security.Principal.SecurityIdentifier)))
                rx.Add(k);
            foreach (System.Security.AccessControl.FileSystemAccessRule k in rx)
                fx.RemoveAccessRule(k);
        }

我的代码中是否存在错误或确实GetAccessRules()开始返回无法RemoveAccessRule()在 Windows 11 中传递的访问规则?

我已经解码了错误值并且GENERIC_WRITE | GENERIC_READ | GENERIC_EXECUTE | DELETE非常荒谬(提示:缺少 SYNCHRONIZE 的文件系统 ACL 导致没有有效访问)但我不明白为什么我不应该能够从 ACL 中删除有问题的条目。

4

0 回答 0