C# 设置权限中英对照表
使用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# 设置权限中英对照表相关推荐
- 三星 SCX-4216 中英对照表及三星传真机的清零方法
三星 SCX-4216 中英对照表及三星传真机的清零方法 一.按住"停止"插电直到显示"中国"按"启动"即可. 二.进入技术模式:目录 # ...
- 侯捷老师整理||IT专业术语中英对照表
侯捷老师整理||IT专业术语中英对照表 百度文库的原文,侯捷老师整理的中英单词,真的对我们学习很有帮助 由于老师的网站已经失效了,所以就是从网上搜索来的,没有注明转载. 一群性质相近同的「东西」,如果 ...
- Android中的权限-中英对照
<uses-permission android:name="android.permission.ACCESS_CHECKIN_PROPERTIES" ></u ...
- Proteus元件库元件名称及中英对照表
以下是具体内容: AND 与门 ANTENNA 天线 BATTERY 直流电源 BELL 铃,钟 BVC 同轴电缆接插件 BRIDEG 1 整流桥(二极管) BRIDEG 2 整流桥(集成块) BUF ...
- 希腊字母、拉丁字母、Markdown、拼写与读音中英对照表
大写 小写 中文名 英文 英语音标注音 大写Markdown 小写Markdown 意义 A α 阿尔法 Alpha /'ælfə/ A \alpha 角度.系数.角加速度.第一个.电离度.转化率 B ...
- quotename mysql_Mysql数据库中英对照表_MySQL
bitsCN.com --语 句 功 能 --数据操作 SELECT --从数据库表中检索数据行和列 INSERT --向数据库表添加新数据行 DELETE --从数据库表中删除数据行 UPDATE ...
- android UI设计属性中英对照表(未修订)
英语 中文 备注 plurals 多义性 Animator 动画师 android 3.0以上版本才能用 ordering 调整 sequentially 顺序地 together 同时 ...
- 微信按钮翻译中英对照表
申明:发文方便自己查阅,当然如对看到的朋友有所帮助,也是乐事一件. 代码中需要调用微信,翻译连续翻车,比如朋友圈,做个记录方便查阅: /** * 微信 中英文对照 * 微信 wecha ...
- 区块链术语中英对照表
English 中文 account level(multiaccountstructure) 账户等级(多账户结构) accounts 账户 adding blocks to 增加区块至 addit ...
最新文章
- Xamarin.Forms获取设备屏幕大小
- python opencv键盘监听
- 批量关闭公众号推送_啥?微信又出新功能了?或将提醒用户关闭长期未读公众号推送...
- k8s command args
- php 渐变色,段落每行渐变色文本效果
- uniapp下载文件保存到手机本地
- 高通android7.0模块编译.ko
- WannaCry深度详细分析报告 转
- 测试用例设计方法_场景法(游戏向)
- 南大计算机专业课表,南京大学计算机科学与技术系2019-2020学年第一学期仙林校区.PDF...
- 《等一朵花开》读书感悟
- 解决yum安装gcc报错:Error: Package: glibc-headers-2.17-317.el7.x86_64
- 快速非支配排序 python版
- HZOI20190819模拟26题解
- 深度学习之学习(3-4)YOLOV4
- 测试抑郁症软件,抑郁症测试app
- 单词首字母大写,将每个单词的首字母改为大写后输出
- Towards Evaluating the Robustness of Neural Networks
- 手把手Excel图表美化(1)--仪表图
- 物联网考计算机是跨专业,2014考研计算机等专业 加入物联网技术方向_跨考网