使用C#根据不同的用户设置文件(夹)权限,

在C#中,权限的设置是求和集的一种机制,不会覆盖以前的权限;

设置 只读 权限

设置文件夹的某用户 只有读 权限 代码:

if (Directory.Exists(apath)){DirectoryInfo di = new DirectoryInfo(apath);DirectorySecurity dirSecurity = di.GetAccessControl();//删除存在的拒绝操作FileSystemAccessRule scanonly_one = new FileSystemAccessRule(username,FileSystemRights.ChangePermissions | FileSystemRights.CreateDirectories | FileSystemRights.CreateFiles |FileSystemRights.DeleteSubdirectoriesAndFiles | FileSystemRights.Modify | FileSystemRights.TakeOwnership |FileSystemRights.Synchronize | FileSystemRights.Traverse, AccessControlType.Deny);dirSecurity.RemoveAccessRule(scanonly_one);//删除完全控制权限FileSystemAccessRule fullcontrol = new FileSystemAccessRule(username,FileSystemRights.FullControl, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit,PropagationFlags.None, AccessControlType.Allow);dirSecurity.RemoveAccessRule(fullcontrol);//设置权限规则二:禁止用户的写、删除、删除子文件夹及文件、更改权限、
//创建文件夹、创建文件、执行文件、更改文件(夹)所有者 等权限,
//且此权限规则 其子文件夹、文件都可以继承FileSystemAccessRule readOnlyRule_two = new FileSystemAccessRule(username,FileSystemRights.Write | FileSystemRights.Delete | FileSystemRights.DeleteSubdirectoriesAndFiles|FileSystemRights.ChangePermissions|FileSystemRights.CreateDirectories|FileSystemRights.CreateFiles|FileSystemRights.ExecuteFile|FileSystemRights.TakeOwnership,InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit,PropagationFlags.None, AccessControlType.Deny);//设置权限规则一:给予用户此文件夹的读取、执行程序、列出文件夹、同步、等权限;
//且此权限规则 其子文件夹、文件都可以继承FileSystemAccessRule readOnlyRule_one = new FileSystemAccessRule(username,FileSystemRights.Read | FileSystemRights.Traverse | FileSystemRights.ListDirectory | FileSystemRights.Synchronize,InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit,PropagationFlags.None, AccessControlType.Allow);dirSecurity.ResetAccessRule(readOnlyRule_one);dirSecurity.AddAccessRule(readOnlyRule_two);di.SetAccessControl(dirSecurity);}         

FileSystemRights 中子函数中英文对照

("AppendData", "附加数据");
("ChangePermissions", "更改权限");
("CreateDirectories", "创建文件夹/附加数据");
("CreateFiles", "创建文件/写入数据");
("Delete", "删除");
("DeleteSubdirectoriesAndFiles", "删除子文件夹及文件");
("ExecuteFile", "执行文件");
("FullControl", "完全控制");
("ListDirectory", "列出文件夹/读取数据");
("Modify", "修改");
("Read", "读取");
("ReadAndExecute", "读取和执行");
("ReadAttributes", "读取属性");
("ReadData", "读取数据");
("ReadExtendedAttributes", "读取扩展属性");
("ReadPermissions", "读取权限");
("Synchronize", "同步");
("TakeOwnership", "更改文件(夹)所有者");
("Traverse", "执行程序");
("Write", "写入");
("WriteAttributes", "写入属性");
("WriteData", "写入数据");
("WriteExtendedAttributes", "写入扩展属性");

继承规则组合

大家写这方面的代码是有米有发现:

在文件夹属性–高级里面,继承方式有6种选择,如下图:

而C#提供的这方面的参数只有:None 、InheritOnly 这2个,那么,怎么才可以实现上面的6中选择呢

答案就是 参数组合,如下图:

此处是翻译上图组合成C#代码:

private ApplyToType GetApplyToType(InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags)
{if (propagationFlags == PropagationFlags.None && inheritanceFlags == InheritanceFlags.None) return ApplyToType.ThisFolderOnly;if (propagationFlags == PropagationFlags.None && inheritanceFlags == InheritanceFlags.ContainerInherit) return ApplyToType.ThisFolderAndSubfolders;if (propagationFlags == PropagationFlags.None && inheritanceFlags == InheritanceFlags.ObjectInherit) return ApplyToType.ThisFolderAndFiles;if (propagationFlags == PropagationFlags.None && inheritanceFlags == (InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit)) return ApplyToType.ThisFolderSubfoldersAndFiles;if (propagationFlags == PropagationFlags.InheritOnly && inheritanceFlags == InheritanceFlags.ContainerInherit)return ApplyToType.SubfoldersOnly;if (propagationFlags == PropagationFlags.InheritOnly && inheritanceFlags == InheritanceFlags.ObjectInherit)return ApplyToType.FilesOnly;if (propagationFlags == PropagationFlags.InheritOnly && inheritanceFlags == (InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit))return ApplyToType.SubfoldersAndFilesOnly;return ApplyToType.AndreDoesntKnow;
}

希望能帮到大家~~

本文出自he ivy 的博客,转载请注明出处:http://blog.csdn.net/heivy/article/details/53518156

C# 设置权限中英对照表相关推荐

  1. 三星 SCX-4216 中英对照表及三星传真机的清零方法

    三星 SCX-4216 中英对照表及三星传真机的清零方法 一.按住"停止"插电直到显示"中国"按"启动"即可. 二.进入技术模式:目录 # ...

  2. 侯捷老师整理||IT专业术语中英对照表

    侯捷老师整理||IT专业术语中英对照表 百度文库的原文,侯捷老师整理的中英单词,真的对我们学习很有帮助 由于老师的网站已经失效了,所以就是从网上搜索来的,没有注明转载. 一群性质相近同的「东西」,如果 ...

  3. Android中的权限-中英对照

    <uses-permission android:name="android.permission.ACCESS_CHECKIN_PROPERTIES" ></u ...

  4. Proteus元件库元件名称及中英对照表

    以下是具体内容: AND 与门 ANTENNA 天线 BATTERY 直流电源 BELL 铃,钟 BVC 同轴电缆接插件 BRIDEG 1 整流桥(二极管) BRIDEG 2 整流桥(集成块) BUF ...

  5. 希腊字母、拉丁字母、Markdown、拼写与读音中英对照表

    大写 小写 中文名 英文 英语音标注音 大写Markdown 小写Markdown 意义 A α 阿尔法 Alpha /'ælfə/ A \alpha 角度.系数.角加速度.第一个.电离度.转化率 B ...

  6. quotename mysql_Mysql数据库中英对照表_MySQL

    bitsCN.com --语 句 功 能 --数据操作 SELECT --从数据库表中检索数据行和列 INSERT --向数据库表添加新数据行 DELETE --从数据库表中删除数据行 UPDATE ...

  7. android UI设计属性中英对照表(未修订)

    英语 中文 备注 plurals 多义性   Animator 动画师 android 3.0以上版本才能用 ordering 调整   sequentially 顺序地   together 同时 ...

  8. 微信按钮翻译中英对照表

    申明:发文方便自己查阅,当然如对看到的朋友有所帮助,也是乐事一件. 代码中需要调用微信,翻译连续翻车,比如朋友圈,做个记录方便查阅: /** * 微信 中英文对照 * 微信         wecha ...

  9. 区块链术语中英对照表

    English 中文 account level(multiaccountstructure) 账户等级(多账户结构) accounts 账户 adding blocks to 增加区块至 addit ...

最新文章

  1. Xamarin.Forms获取设备屏幕大小
  2. python opencv键盘监听
  3. 批量关闭公众号推送_啥?微信又出新功能了?或将提醒用户关闭长期未读公众号推送...
  4. k8s command args
  5. php 渐变色,段落每行渐变色文本效果
  6. uniapp下载文件保存到手机本地
  7. 高通android7.0模块编译.ko
  8. WannaCry深度详细分析报告 转
  9. 测试用例设计方法_场景法(游戏向)
  10. 南大计算机专业课表,南京大学计算机科学与技术系2019-2020学年第一学期仙林校区.PDF...
  11. 《等一朵花开》读书感悟
  12. 解决yum安装gcc报错:Error: Package: glibc-headers-2.17-317.el7.x86_64
  13. 快速非支配排序 python版
  14. HZOI20190819模拟26题解
  15. 深度学习之学习(3-4)YOLOV4
  16. 测试抑郁症软件,抑郁症测试app
  17. 单词首字母大写,将每个单词的首字母改为大写后输出
  18. Towards Evaluating the Robustness of Neural Networks
  19. 手把手Excel图表美化(1)--仪表图
  20. 物联网考计算机是跨专业,2014考研计算机等专业 加入物联网技术方向_跨考网

热门文章

  1. iPhone和iPad的一些产品型号
  2. WIN10子系统Ubuntu16.04安装ia32-libs库
  3. 【最短路】Aircraft
  4. LocalDate和LocalTime的用法介绍
  5. proxmox的U盘制作
  6. 一文剖析mlock锁原理
  7. PCM/FM调制原理与Matlab算法仿真
  8. 万网域名解析到IP地址
  9. mysql 5.7.4 m14_win7 安装64 MySQL
  10. 今日头条成功的核心技术秘诀是什么?深度解密个性化资讯推荐技术