我知道有很多关于删除文件夹权限的帖子。
但是,我尝试的每一个似乎都保持用户组完好无损并且不会抛出异常 - 规则从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);
目的是删除所有用户,然后在事后手动添加特定用户组。这部分不是问题,删除当前用户是我遇到麻烦的地方。
答案 0 :(得分:2)
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);