• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

用C#给文件夹设置NTFS权限(ACL)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

引入名称空间:

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# 的帐户要具有足够的权限。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
c#截取字符串发布时间:2022-07-14
下一篇:
C#驱动MongoDB官方中查询条件Query用法Query.All("name","a",&qu ...发布时间:2022-07-14
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap