在C#(2.0)中如何删除目录的所有权限,因此我可以限制访问权限。我将把访问权限添加回一组有限的用户。
答案 0 :(得分: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;
}
显然使用如下:
DirectoryInfo directoryInfo = new DirectoryInfo(path);
DirectorySecurity directorySecurity = directoryInfo.GetAccessControl();
directorySecurity = RemoveExplicitSecurity(directorySecurity);
Directory.SetAccessControl(path, directorySecurity);
答案 1 :(得分:8)
查看System.Security.AccessControl命名空间中的类,尤其是DirectorySecurity.RemoveAccessRule方法。
此外,如果您删除所有权限,那么之后您将无法再添加任何权限: - )
答案 2 :(得分:3)
答案 3 :(得分:2)
System.IO.Directory.GetAccessControl()然后编辑返回的FileSecurity对象。