我知道有很多关于删除文件夹权限的帖子。
然而,我尝试的每一个似乎都保持用户组完好无损,并且没有抛出异常 - 规则已从 ACL 中删除,修改后的 AccessControl 已成功设置,但没有进行任何实际更改。
我需要直接清除文件夹的权限列表。我希望该文件夹之后为空。
示例:
这个:
应该变成:
这是我目前正在尝试但没有成功的方法:
DirectorySecurity objSecObj = directory.GetAccessControl();
AuthorizationRuleCollection acl = objSecObj.GetAccessRules(true, true,
typeof(System.Security.Principal.NTAccount));
objSecObj.SetAccessRuleProtection(false,false);
// EDIT: The above line was the problem, first param should be true.
foreach (FileSystemAccessRule ace in acl)
{
objSecObj.RemoveAccessRuleSpecific(ace);
}
directory.SetAccessControl(objSecObj);
目的是删除所有用户,然后手动添加特定的用户组。这部分不是问题,删除当前用户是我遇到麻烦的地方。
最佳答案
DirectorySecurity objSecObj = directory.GetAccessControl();
AuthorizationRuleCollection acl = objSecObj.GetAccessRules(true, true,
typeof(System.Security.Principal.NTAccount));
objSecObj.SetAccessRuleProtection(true, false); //to remove inherited permissions
foreach (FileSystemAccessRule ace in acl) //to remove any other permission
{
objSecObj.PurgeAccessRules(ace.IdentityReference); //same as use objSecObj.RemoveAccessRuleSpecific(ace);
}
directory.SetAccessControl(objSecObj);
关于c# - 无法使用 DirectorySecurity 工具删除文件夹权限(访问规则),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21334902/