zoukankan      html  css  js  c++  java
  • 用 C# 给文件夹设置 NTFS 权限(ACL)

    引入名称空间:

    using System.Security.AccessControl;
    using System.IO;

    设置 NTFS 权限:

    DirectoryInfo di = new DirectoryInfo(path);
    DirectorySecurity ds = di.GetAccessControl();
     
    FileSystemAccessRule newAccessRule = new FileSystemAccessRule(identity, rights,
        InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit,
        PropagationFlags.None,
        AccessControlType.Allow);
         
    ds.AddAccessRule(newAccessRule);
    di.SetAccessControl(ds);

    参数

    • path 要设置 NTFS 权限的文件夹。
    • identity 用户名。
    • rights FileSystemRights 对象,值为 FileSystemRights.Read、FileSystemRights.Write、FileSystemRights.FullControl 等,或者用“|”将多个权限合起来。

    InheritanceFlags 指定哪些接受权限继承

    • InheritanceFlags.ContainerInherit 下级文件夹要继承权限。
    • InheritanceFlags.None 下级文件夹、文件都不继承权限。
    • InheritanceFlags.ObjectInherit 下级文件要继承权限。

    上面提到“文件夹”、“文件”,更准确的说法应该是“容器”、“叶对象”,因为它不仅仅用于文件夹、文件,还可能用于其他地方,比如注册表权限。

    PropagationFlags 如何传播权限

    • PropagationFlags.InheritOnly 不对 path 作设置,只是传播到下级。
    • PropagationFlags.None 不作设置,即既对 path 作设置,也传播到下级。
    • PropagationFlags.NoPropagateInherit 只是对 path 作设置,不传播到下级。

    PropagationFlags 只是在 InheritanceFlags 不为 None 时才有意义。也就是说 InheritanceFlags 指定了哪类对象可接受权限继承(传播),而 PropagationFlags 指明了如何传播这些权限。

    说明

    要给文件给文件夹设置权限,首先运行 C# 的帐户要具有足够的权限。

  • 相关阅读:
    CSS截断字符串
    [VB.NET] 打印DataGridView类
    [C#] 打印DataGridView类
    [MySQL] errno:150
    [C#] 用户自定义控件(含源代码)透明文本框
    [分享] 微软面试题
    [C#] 用户自定义控件(含源代码)圆角Panel
    [MySQL] 史上最全的MySQL备份方法
    [C#(WebForm)] 利用递归遍历文件夹和文件存入TreeView
    [VB] (开源)VB高仿Windows7桌面炫丽版
  • 原文地址:https://www.cnblogs.com/star250/p/1592969.html
Copyright © 2011-2022 走看看