代码之家  ›  专栏  ›  技术社区  ›  C. Ross trotttrotttrott

删除所有目录权限

  •  11
  • C. Ross trotttrotttrott  · 技术社区  · 15 年前

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

    4 回复  |  直到 15 年前
        1
  •  8
  •   Stu Mackellar    15 年前

    看看里面的课程 System.Security.AccessControl 名称空间,尤其是 DirectorySecurity.RemoveAccessRule 方法。

    此外,如果删除所有权限,则以后将无法再添加任何内容:-)

        2
  •  20
  •   Bryan    12 年前

    免责声明:我意识到这已经被回答和接受,我真的想把它作为评论发布到接受的答案上,但是由于无法格式化评论,我不得不将它作为答案发布(从技术上讲,它是…)。

    我也这么想,找到了你的问题。斯图的回答帮助我想出了这个解决办法。(注意,我只想删除显式安全性)。

    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);
    
        3
  •  3
  •   TWA    15 年前

    下面是来自codeproject的一组关于Windows ACL编程的文章:

    The Windows Access Control Model

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

        4
  •  2
  •   codymanix    15 年前

    system.io.directory.getaccesscontrol(),然后编辑返回的filesecurity对象。