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

取得目录的访问控制和审核安全(ACL)

DirectorySecurity fileAcl = Directory.GetAccessControl(filePath);

文件夹权限继承控制

fileAcl.SetAccessRuleProtection(true, true);//取消权限继承,且保留继承的访问规则
fileAcl.SetAccessRuleProtection(true, true);//取消权限继承,且移除继承的访问规则
fileAcl.SetAccessRuleProtection(false, true);//允许权限继承,且忽略第二个参数

访问规则访问控制项创建

FileSystemAccessRule everyoneRule = new FileSystemAccessRule("Everyone", FileSystemRights.FullControl, AccessControlType.Allow);
FileSystemAccessRule everyoneRule1 = new FileSystemAccessRule("Everyone", FileSystemRights.Modify, AccessControlType.Allow);
            //"Everyone"用户账户名称
            //FileSystemRights.FullControl 访问规则
            //AccessControlType.Allow 允许访问受保护对象,AccessControlType.Deny拒绝访问受保护对象
SID也就是安全标识符(Security Identifiers),是标识用户、组和计算机帐户的唯一的号码。在第一次创建该帐户时,
将给网络上的每一个帐户发布一个唯一的 SID。Windows 中的内部进程将引用帐户的 SID 而不是帐户的用户或组名。
如果创建帐户,再删除帐户,然后使用相同的用户名创建另一个帐户,则新帐户将不具有授权给前一个帐户的权力或权限,
原因是该帐户具有不同的 SID 号。安全标识符也被称为安全 ID 或 SID。

修改访问控制列表(ACL)

            bool result = false;
//将指定的授权规则添加到访问控制列表 (ACL)。
fileAcl.ModifyAccessRule(AccessControlModification.Add, everyoneRule,out result); //从 ACL 移除所含安全性标识符 (SID) 和访问掩码与指定授权规则一样的授权规则。
fileAcl.ModifyAccessRule(AccessControlModification.Remove, everyoneRule, out result);
//从 ACL 移除所含 SID 与指定授权规则一样的授权规则。
fileAcl.ModifyAccessRule(AccessControlModification.RemoveAll, everyoneRule, out result);
//从 ACL 移除与指定的授权规则完全匹配的授权规则。
fileAcl.ModifyAccessRule(AccessControlModification.RemoveSpecific, everyoneRule, out result); //从 ACL 移除所含 SID 与指定授权规则一样的授权规则,然后将指定的授权规则添加到 ACL。
fileAcl.ModifyAccessRule(AccessControlModification.Reset, everyoneRule, out result);
//从 ACL 移除所有授权规则,然后将指定的授权规则添加到 ACL。
fileAcl.ModifyAccessRule(AccessControlModification.Set, everyoneRule, out result); //权限追加
fileAcl.AddAccessRule(everyoneRule);
//权限删除
fileAcl.RemoveAccessRule(everyoneRule);
//从当前文件或目录移除所有匹配的允许或拒绝访问控制列表 (ACL) 权限。
fileAcl.RemoveAccessRuleAll(everyoneRule);
//从当前文件或目录移除指定用户的所有访问控制列表 (ACL) 权限。
fileAcl.RemoveAccessRuleSpecific(everyoneRule);
//从当前文件或目录移除单个匹配的允许或拒绝访问控制列表 (ACL) 权限。

遍历ACL中的ACE

            AuthorizationRuleCollection rules = fileAcl.GetAccessRules(true, true, typeof(NTAccount));
// AuthorizationRule Rule = rules[0];
foreach (FileSystemAccessRule rule in rules)
{
if(rule.IdentityReference.Value.CompareTo("Users")==0)
{
fileAcl.RemoveAccessRule(rule);
}
}

C#文件夹权限操作整理的更多相关文章

  1. ubuntu chmod 无法更改 文件夹权限 系统提示“不允许的操作 2、linux 如何修改只读文件 3、ubuntu安装

    1.ubuntu chmod 无法更改 文件夹权限 系统提示“不允许的操作 答案:需要超级用户权限 sudo 2.linux 如何修改只读文件 答案:可以使用chmod命令,为改文件提供其他的权限.u ...

  2. python 查看文件夹权限组和用OS模块操作文件夹

    @建议操作server服务器文件夹时可以映射网络驱动盘 import win32securityimport ntsecuritycon as con FILENAME = r'D:\tmp\acc_ ...

  3. linux文件及文件夹权限

    以前上学的时候简单了解了下linux,现在对它的认识也只停留在一些小白命令上.以为我只要不是做服务器端开发的应该不会去碰吧,工作了才知道做开发的多少还是要熟悉一些linux的,至少你的项目会部署在li ...

  4. Linux chmod命令修改文件与文件夹权限的命令附实例

    Linux chmod命令修改文件与文件夹权限的命令附实例 作者:佚名 字体:[增加 减小] 来源:互联网 时间:05-01 20:46:07我要评论 在linux中要修改一个文件夹或文件的权限我们需 ...

  5. Linux命令(14)文件和文件夹权限管理:chmod

    linux文件和文件夹权限简介: chmod命令用于改变linux系统文件或目录的访问权限.用它控制文件或目录的访问权限. Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方 ...

  6. linux 文件夹权限及umask

    先创建一个目录,看看权限: $ ll 总用量 drwxrwxr-x huangxm huangxm 2月 : ./ drwxr-xr-x huangxm huangxm 2月 : ../ drwxrw ...

  7. 文件和文件夹权限-Win7公共盘中出现大量临时文件

    公司中有一个文件服务器,给不同部门和员工设置了不同的权限,最近有员工(没有修改权限,有读取及执行,读取,写入)反映在公共盘上修改文件的时候会产生大量的临时文件,添加上修改权限之后就可以了,然后被同事问 ...

  8. python之文件的读写和文件目录以及文件夹的操作实现代码

    这篇文章主要介绍了python之文件的读写和文件目录以及文件夹的操作实现代码,需要的朋友可以参考下 为了安全起见,最好还是给打开的文件对象指定一个名字,这样在完成操作之后可以迅速关闭文件,防止一些无用 ...

  9. Deepin中设置文件或文件夹权限

    Deepin中设置文件或文件夹权限 -R 递归进行某项操作,不论是删除文件夹或者修改文件夹下所有文件权限   权限更改,777相当于完全控制权限: 更改一个文件夹或文件的权限:chmod 777 文件 ...

随机推荐

  1. 几个简单的windows API

    //将光标移动到x,y位置void gotoxy(int x, int y){ COORD c; c.X = x; c.Y = y; SetConsoleCursorPosition(GetStdHa ...

  2. jQuery-弹幕

    该方法可能有bug,毕竟简单粗暴 <!DOCTYPE html><html> <head> <meta charset="UTF-8"&g ...

  3. 安装PyQt5时缺少designer.exe的解决办法

    学习PyQt框架的时候,看到了可以用可视化的方法搭建界面,好像ios的xib,但是安装完成pyqt5后怎么都找不designer.exe这个文件,于是查到了一下.发现了可以通过安装pip instal ...

  4. [转]Examining Open vSwitch Traffic Patterns

    In this post, I want to provide some additional insight on how the use of Open vSwitch (OVS) affects ...

  5. Requests模块—请求

    1. 安装 pip install requests import requests 2. 使用 (1) GET 1. 语法 requests.get(url, params=None, **kwar ...

  6. Eclipse常用20个快捷键

    Eclipse常用20个快捷键 1. Ctrl+F : 本文查找Find与替换Replace 2. Ctrl+H : 全局搜索,可按照文件类型搜索 3. Ctrl+1 : 快速修复,能快速的显示光标所 ...

  7. JavaScript 高性能数组去重

    中午和同事吃饭,席间讨论到数组去重这一问题 我立刻就分享了我常用的一个去重方法,随即被老大指出这个方法效率不高 回家后我自己测试了一下,发现那个方法确实很慢 于是就有了这一次的高性能数组去重研究 一. ...

  8. git常用命令总结——你一定会用到的几个命令

    git入门看廖雪峰大神的教程即可,通俗易懂:      https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b806 ...

  9. 图片格式PGM缩写

    PGM是Portable Gray Map的缩写.它是灰度图像格式中一种最简单的格式标准.另外两种与之相近的图片格式是PBM和PPM.它们分别相应着黑白图像和彩色图像. PGM的数据存放方式相比于JP ...

  10. LeetCode:1_Two_Sum | 两个元素相加等于目标元素 | Medium

    题目: Given an array of integers, find two numbers such that they add up to a specific target number. ...