删除所有目录权限

在C#(2.0)中如何删除目录的所有权限,因此我可以限制访问权限。 我将向一组有限的用户添加访问权限。

查看System.Security.AccessControl命名空间中的类,尤其是DirectorySecurity.RemoveAccessRule方法。

此外,如果您删除所有权限,那么之后您将无法添加任何权限:-)

免责声明:我意识到这已经得到了回答和接受,我真的想将此作为对已接受答案的评论发布,但是无法格式化评论迫使我将此作为答案发布(从技术上讲,它是)….

我当时也想做同样的事情,并找到了你的问题。 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); 

以下是CodeProject关于Windows ACL编程的一组很棒的文章:

Windows Access Control模型

本系列的第3部分显示了.NET特定的方法。

System.IO.Directory.GetAccessControl()然后编辑返回的FileSecurity对象。