删除所有目录权限

时间:2009-09-18 15:47:07

标签: c# .net security permissions

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

4 个答案:

答案 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)

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

The Windows Access Control Model

该系列的

Part 3显示了.NET特定的方法。

答案 3 :(得分:2)

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