Bry*_*yan 21
免责声明:我意识到这已经得到了回答和接受,我真的想发布这个作为对已接受答案的评论,但是无法格式化评论迫使我发布这个作为答案(从技术上讲,它是)....
我当时也想做同样的事情,并找到了你的问题.Stu的回答帮助我提出了这个解决方案.(请注意,我只对删除显式安全性感兴趣).
private static DirectorySecurity RemoveExplicitSecurity(DirectorySecurity directorySecurity)
{
AuthorizationRuleCollection rules = directorySecurity.GetAccessRules(true, false, typeof(System.Security.Principal.NTAccount));
foreach (FileSystemAccessRule rule in rules)
directorySecurity.RemoveAccessRule(rule);
return directorySecurity;
}
Run Code Online (Sandbox Code Playgroud)
这显然用作如下:
DirectoryInfo directoryInfo = new DirectoryInfo(path);
DirectorySecurity directorySecurity = directoryInfo.GetAccessControl();
directorySecurity = RemoveExplicitSecurity(directorySecurity);
Directory.SetAccessControl(path, directorySecurity);
Run Code Online (Sandbox Code Playgroud)
查看System.Security.AccessControl命名空间中的类,尤其是DirectorySecurity.RemoveAccessRule方法.
此外,如果您删除所有权限,那么之后您将无法添加任何权限:-)