给你一个我自己收集整理的类:

例:

C# code?
1
2
3
4
5
6
7
8
9
10
11
12
13
using System.Security.AccessControl;
  
  
string strPath = "d:\temp";
if (!Directory.Exists(strPath))
{
    Directory.CreateDirectory(strPath);
}
// 重新设置目录访问权限
NTFSHelper.RemoveDirectoryAccountSecurityAll(strPath);
NTFSHelper.AddDirectorySecurity(strPath, "SYSTEM", FileSystemRights.FullControl);
NTFSHelper.AddDirectorySecurity(strPath, "Administrators", FileSystemRights.FullControl);

NTFSHelper.cs

C# code?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
using System;
using System.IO;
using System.Text;
using System.Collections.Generic;
using System.Security.AccessControl;
  
namespace NTFS
{
    public sealed class NTFSHelper
    {
        #region 目录权限
  
        #region 添加权限
        /// <summary>
        /// 添加 指定目录 指定用户 指定的 权限
        /// </summary>
        /// <param name="FileName">指定目录</param>
        /// <param name="Account">用户帐户</param>
        /// <param name="UserRights">权限【RCFW】</param>
        public static void AddDirectorySecurity(string FileName, string Account, string UserRights)
        {
            FileSystemRights Rights = new FileSystemRights();
  
            if (UserRights.IndexOf("R") >= 0)
            {
                Rights = Rights | FileSystemRights.Read;
            }
            if (UserRights.IndexOf("C") >= 0)
            {
                Rights = Rights | FileSystemRights.ChangePermissions;
            }
            if (UserRights.IndexOf("F") >= 0)
            {
                Rights = Rights | FileSystemRights.FullControl;
            }
            if (UserRights.IndexOf("W") >= 0)
            {
                Rights = Rights | FileSystemRights.Write;
            }
  
            bool ok;
            DirectoryInfo dInfo = new DirectoryInfo(FileName);
            DirectorySecurity dSecurity = dInfo.GetAccessControl();
            InheritanceFlags iFlags = new InheritanceFlags();
            iFlags = InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit;
            FileSystemAccessRule AccessRule2 = new FileSystemAccessRule(Account, Rights, iFlags, PropagationFlags.None, AccessControlType.Allow);
            dSecurity.ModifyAccessRule(AccessControlModification.Add, AccessRule2, out ok);
            dInfo.SetAccessControl(dSecurity);
        }
        /// <summary>
        /// 添加 指定目录 指定用户 指定的 权限
        /// </summary>
        /// <param name="FileName">指定目录</param>
        /// <param name="Account">用户帐户</param>
        /// <param name="Rights">Windows目录权限</param>
        public static void AddDirectorySecurity(string FileName, string Account, FileSystemRights Rights)
        {
            bool ok;
            DirectoryInfo dInfo = new DirectoryInfo(FileName);
            DirectorySecurity dSecurity = dInfo.GetAccessControl();
            InheritanceFlags iFlags = new InheritanceFlags();
            iFlags = InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit;
            FileSystemAccessRule AccessRule2 = new FileSystemAccessRule(Account, Rights, iFlags, PropagationFlags.None, AccessControlType.Allow);
            dSecurity.ModifyAccessRule(AccessControlModification.Add, AccessRule2, out ok);
            dInfo.SetAccessControl(dSecurity);
        }
        #endregion
  
        #region 获取目录权限
        /// <summary>
        /// 获取 指定目录 除Administrators和SYSTEM之外的 权限列表
        /// </summary>
        /// <param name="DirName"></param>
        /// <returns></returns>
        public static List<string> GetDirectoryAccountSecurity(string DirName)
        {
            List<string> dAccount = new List<string>();
            DirectoryInfo dInfo = new DirectoryInfo(DirName);
            if (dInfo.Exists)
            {
                DirectorySecurity sec = Directory.GetAccessControl(DirName, AccessControlSections.All);
                foreach (FileSystemAccessRule rule in sec.GetAccessRules(truetruetypeof(System.Security.Principal.NTAccount)))
                {
                    if (rule.IdentityReference.Value != @"NT AUTHORITY\SYSTEM" && rule.IdentityReference.Value != @"BUILTIN\Administrators")
                        dAccount.Add(rule.IdentityReference.Value);
                }
            }
            return dAccount;
        }
        /// <summary>
        /// 获取 指定目录 所有权限列表
        /// </summary>
        /// <param name="DirName"></param>
        /// <returns></returns>
        public static List<string> GetDirectoryAccountSecurityAll(string DirName)
        {
            List<string> dAccount = new List<string>();
            DirectoryInfo dInfo = new DirectoryInfo(DirName);
            if (dInfo.Exists)
            {
                DirectorySecurity sec = Directory.GetAccessControl(DirName, AccessControlSections.All);
                foreach (FileSystemAccessRule rule in sec.GetAccessRules(truetruetypeof(System.Security.Principal.NTAccount)))
                {
                    dAccount.Add(rule.IdentityReference.Value);
                }
            }
            return dAccount;
        }
  
  
        #endregion
  
        #region 移除目录权限
        /// <summary>
        /// 移除 指定目录 指定用户的 权限
        /// </summary>
        /// <param name="DirName"></param>
        /// <param name="Account"></param>
        public static void RemoveDirectoryAccountSecurity(string DirName, string Account)
        {
            DirectoryInfo dInfo = new DirectoryInfo(DirName);
            if (dInfo.Exists)
            {
                System.Security.Principal.NTAccount myAccount = new System.Security.Principal.NTAccount(System.Environment.MachineName, Account);
  
                DirectorySecurity dSecurity = dInfo.GetAccessControl();
  
                FileSystemAccessRule AccessRule = new FileSystemAccessRule(Account, FileSystemRights.FullControl, AccessControlType.Allow);
                FileSystemAccessRule AccessRule2 = new FileSystemAccessRule(Account, FileSystemRights.FullControl, AccessControlType.Deny);
  
                InheritanceFlags iFlags = InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit;
                PropagationFlags pFlags = PropagationFlags.InheritOnly | PropagationFlags.NoPropagateInherit;
  
                dSecurity.AccessRuleFactory(myAccount, 983551, false, iFlags, pFlags, AccessControlType.Allow);
  
                dSecurity.RemoveAccessRuleAll(AccessRule);
                dSecurity.RemoveAccessRuleAll(AccessRule2);
  
  
  
                dInfo.SetAccessControl(dSecurity);
            }
        }
  
        /// <summary>
        /// 移除 指定目录 所有权限
        /// </summary>
        /// <param name="DirName"></param>
        public static void RemoveDirectoryAccountSecurityAll(string DirName)
        {
            RemoveDirectoryAccountSecurityProtection(DirName);
            List<string> dAccount = GetDirectoryAccountSecurityAll(DirName);
            foreach (string account in dAccount)
            {
                RemoveDirectoryAccountSecurity(DirName, account);
            }
        }
  
        /// <summary>
        /// 移除 指定目录 所有继承的权限
        /// </summary>
        /// <param name="DirName"></param>
        public static void RemoveDirectoryAccountSecurityProtection(string DirName)
        {
            DirectoryInfo dInfo = new DirectoryInfo(DirName);
            if (dInfo.Exists)
            {
                DirectorySecurity dSecurity = dInfo.GetAccessControl();
                dSecurity.SetAccessRuleProtection(truefalse);
                dSecurity.SetAuditRuleProtection(truefalse);
  
                dInfo.SetAccessControl(dSecurity);
            }
        }
  
        #endregion
  
        #endregion
  
        #region 文件权限
        /// <summary>
        /// 获取 指定文件 除Administrators和SYSTEM之外的 权限列表
        /// </summary>
        /// <param name="fileName"></param>
        /// <returns></returns>
        public static List<string> GetFileAccountSecurity(string fileName)
        {
            List<string> fAccount = new List<string>();
            FileInfo fInfo = new FileInfo(fileName);
            if (fInfo.Exists)
            {
                FileSecurity fec = File.GetAccessControl(fileName, AccessControlSections.All);
                foreach (FileSystemAccessRule rule in fec.GetAccessRules(truetruetypeof(System.Security.Principal.NTAccount)))
                {
                    if (rule.IdentityReference.Value != @"NT AUTHORITY\SYSTEM" && rule.IdentityReference.Value != @"BUILTIN\Administrators")
                        fAccount.Add(rule.IdentityReference.Value);
                }
            }
            return fAccount;
        }
  
        /// <summary>
        /// 移除 指定文件 指定用户的 权限
        /// </summary>
        /// <param name="fileName"></param>
        /// <param name="Account"></param>
        public static void RemoveFileAccountSecurity(string fileName, string Account)
        {
  
            FileInfo fInfo = new FileInfo(fileName);
            if (fInfo.Exists)
            {
                FileSecurity fSecurity = fInfo.GetAccessControl();
                FileSystemAccessRule AccessRule = new FileSystemAccessRule(Account, FileSystemRights.FullControl, AccessControlType.Allow);
                FileSystemAccessRule AccessRule2 = new FileSystemAccessRule(Account, FileSystemRights.FullControl, AccessControlType.Deny);
                fSecurity.RemoveAccessRuleAll(AccessRule);
                fSecurity.RemoveAccessRuleAll(AccessRule2);
                fInfo.SetAccessControl(fSecurity);
            }
        }
  
        #endregion
    }
}

转载于:https://www.cnblogs.com/cyes/archive/2013/05/23/3095611.html

设置NTFS文件访问权限相关推荐

  1. Linux 权限管理: 权限的概念、权限管理、文件访问权限的设置、 粘滞位

    Linux下的基本指令 目录: 权限的概念 权限管理 文件访问权限的设置方法 目录的权限 粘滞位 权限的概念 Linux下用户有两种: 超级用户(root).普通用户. 超级用户:具有最高权限,可以在 ...

  2. 2003 文件服务器权限设置,win2003服务器设置文件访问权限

    win2003服务器设置文件访问权限 内容精选 换一换 如果您需要对华为云上购买的云手机(Cloud Phone,CPH)资源,给企业中的员工设置不同的访问权限,以达到不同员工之间的权限隔离,您可以使 ...

  3. linux查看目录访问权限,Linux文件访问权限

    一.设置用户ID和设置组ID 1.实际用户ID和实际组ID标识当前登录的用户. 2.有效用户ID,有效组ID以及附加组ID决定了我们的文件访问权限. 3.通常,有效用户ID等于实际用户ID,有效组ID ...

  4. 云服务器共享文件如何访问权限,怎么设置共享文件夹访问权限?

    对于办公室一族来说,共享文件夹是一件普通又正常的事情,为了对共享文件的使用进行有效的管理,防止越权访问共享文件的行为,尤其是防止随意修改共享文件.随意删除共享文件以及随意复制共享文件的行为,我们通常需 ...

  5. 文件服务器访问权限分配,设置文件服务器的访问权限

    概要:问:在局域网中,使用Windows 2000 Sever提供文件服务,现准备将服务器升级为域控制器,并重新分配客户端权限.请问服务端权限又如何设置?答:解决方案大致如下:第一步,必须把服务器升级 ...

  6. Linux中ls -l(ll)返回结果中的文件访问权限-rw-r--rw-

    linux文件访问权限(像rw-r--rw-是什么意思) Linux的文件访问权限分为 读.写.执行三种 r:可读(4) w:可写(2)对目录来说则可新建文件 x:可执行(1)对目录来说则可进入该目录 ...

  7. 系统管理:文件访问权限之ACL

    ACL(acess control list) 传统UNIX文件系统:文件访问权限包含三个部分,user / group / others,这类文件系统简洁而功能相对完善,在很长时间内被证实可以被应用 ...

  8. linux文件访问权限,Linux文件权限和访问模式

    为了更加安全的存储文件,Linux为不同的文件赋予了不同的权限,每个文件都拥有下面三种权限: 所有者权限:文件所有者能够进行的操作 组权限:文件所属用户组能够进行的操作 外部权限(其他权限):其他用户 ...

  9. 计算机如何授权访问局域网,局域网权限怎么设置?局域网访问权限设置软件哪个好...

    当前,很多企事业单位的局域网都配置了文件服务器,用于共享单位的一些文件供局域网用户访问.同时,员工工作当中形成的劳动成果.重要文件等也常常存储在文件服务器上,便于文件保存.协同工作等需要.这使得,企业 ...

最新文章

  1. 解决MYSQL大表问题-实战篇(二)
  2. [Lua]50行代码的解释器,用来演示lambda calculus
  3. 关于FastStone Capture for Windows在Windows10英文系统下的中文乱码问题
  4. HDU1232 畅通工程
  5. 前端学习(2472):发布文章功能介绍
  6. 老赵书托(1):写在前面
  7. percona-toolkit(pt工具)使用总结
  8. Tomcat引起的中文乱码问题
  9. ST算法 Sliding Window algorithm template
  10. 读懂 x86 架构 CPU 虚拟化,看这文就够了 | 赠书
  11. 导入别的项目到我的eclipse上出现红色感叹号问题
  12. OpenWRT原版固件安装
  13. 斜齿轮重合度计算公式_斜齿轮的端面重合度计算
  14. 现代数字图像处理作业———对lena图像进行简单处理
  15. android手机连不上wifi密码,修改wifi密码后手机连不上_修改wifi密码后手机不能上网-192路由网...
  16. [生成模型新方向]: score-based generative models
  17. 程序员,你以为你很优秀,但却面试屡屡失败?
  18. 输入法半角和全角的快捷转换_Windows 10—禁用Ctrl+Space输入法非输入法切换
  19. 简单又强大的联发科手机PhilZ Touch Recovery安装器,详细教程 - 本文出自高州吧
  20. unity3d学习笔记-动画(2.控制动画与Animator Controller)

热门文章

  1. CTF之一次曲折获取Flag的过程
  2. Nginx添加ngx_http_headers_module模块
  3. select函数及fd_set介绍
  4. Nginx——debug的使用
  5. 《数据库SQL实战》找出所有员工当前薪水salary情况
  6. 《剑指offer》字符串的排列
  7. hadoop日志文件
  8. HBase中Bloomfilter类型的设置及使用的理解
  9. 基于syslog+logstash+elasticSearch+redis日志分析系统实现
  10. python修行之路(六 三级菜单实例)