C#设置与获取目录权限(.net控制ACL)

想用c#来设置和读取ntfs分区上的目录权限,找了很多资料,未果。终于发现了一段vb.net的代码,做了修改,以C#展示给大家。

using System;
using System.Collections;
using System.IO;
using System.Security.AccessControl;
static class Tester
{
  public static void Main()
  {
    try
    {
      string filename = @"f:\k"; //目标目录
      string account = @"Administrator";//用户名
      string userrights = @"RW";//权限字符串,自己定义的
      AddDirectorySecurity(filename, account, userrights);
      Console.ReadLine();
    }
    catch (Exception e)
    {
      Console.WriteLine(e);
      Console.ReadLine();
    }
  }
  static public 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);
    //列出目标目录所具有的权限
    DirectorySecurity sec = Directory.GetAccessControl(FileName, AccessControlSections.All);
    foreach (FileSystemAccessRule rule in sec.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount)))
    {
      Console.WriteLine("----------------------------------");
      Console.WriteLine(rule.IdentityReference.Value);
      if ((rule.FileSystemRights & FileSystemRights.Read) != 0)
        Console.WriteLine(rule.FileSystemRights.ToString());
    }
    Console.Read();
  }
}

对照MSDN,很容易看懂上面的代码。 但是貌似这个程序需要以管理员身份来运行。^_^

时间: 2025-01-19 19:12:27

C#设置与获取目录权限(.net控制ACL)的相关文章

设置Nginx浏览目录权限的方法

在学习Linux时,Web环境是LNMP,在使用过程中浏览目录时提示没有权限,要打开这个功能需要做以下操作 打开 nginx.conf 配置文件 在 location server 中或 http 代码片段中加入 autoindex on 通过以上两个设置就可以了,不过下面两个参数可以根据自身需求来选择设置 参数:autoindex_exact_size off; 说明:默认为on,显示出文件的确切大小,单位是bytes. 改为off后,显示出文件的大概大小,单位是kB或者MB或者GB 参数:a

LNMP设置Nginx浏览目录权限

在学习Linux时,Web环境是LNMP,在使用过程中浏览目录时提示没有权限,要打开这个功能需要做以下操作 打开 nginx.conf 配置文件 在 location server 中或 http 代码片段中加入 autoindex on 通过以上两个设置就可以了,不过下面两个参数可以根据自身需求来选择设置 参数:autoindex_exact_size off; 说明:默认为on,显示出文件的确切大小,单位是bytes. 改为off后,显示出文件的大概大小,单位是kB或者MB或者GB 参数:a

win8系统怎么获取文件权限

  部分用户询问小编win8系统怎么获取文件权限?在修改Win8系统时,修改数据文件会遭受系统拒绝,怎么回事呢?其实win8系统是为了安全起见,对文件有权限的限制.当win8系统文件权限不足,就无法访问设置了.那么我们该如何对文件权限进行设置,获取文件权限?不要着急,接下来系统城小编告诉大家win8系统手动获取文件权限的技巧. 具体方法如下: 1.右键点击下载要获取权限的文件,然后选择"属性",然后在打开的属性窗口上,切换至"安全"选项卡中,然后点击"高级

教你获取Windows Vista完全控制权限

微软为了加强系统的安全性,给Windows http://www.aliyun.com/zixun/aggregation/15470.html">Vista的操作设置了很多"可有可无"的功能控制权限.当用户对部分系统文件进行修改.复制等操作时,Vista会提示你没有权限. 我们就以今天一同发布的"想换就换 修改Vista启动画面最简单方法"文章中,替换"winload.exe.mui"系统文件为例,给大家写一个详细的教程,当你遇

apache在win2003下的安全设置(配合文件夹权限目录,很好很安全)_Linux

于是要创建一个新的帐户来替代这个帐号启动apache并设置相应的权限: 1.在计算机管理里的本地用户和组里面创建一个帐户,例如:apache,密码设置为 apacheuser,加入guests组(如果出现问题,可以赋予user权限): 2.打开开始->管理工具->本地安全策略,在用户权限分配中选择"作为服务登陆",添加apache用 户: 3.计算机管理里面选择服务,找到apache2.2,先停止服务,右击->属性,选择登陆,把单选框从本地系统帐户切换到此帐户,然后查

IIS7目录权限设置的问题详解

前段时间在windows server 2008 r2 (x64)服务器上配置好IIS 7.5+PHP(FASTCGI)+MYSQL以后,运行一直还算正常.直到昨天因为在线备份mysql失败而焦头烂额. php显示执行成功,但是显示执行时间是一个天文数字--这样的情况在以前配置nginx或者apache的php环境下也遇见过,原因无非是php内存限制过小,或者超时时间设置过小所致.然而修改fastcgi执行时间,加大php内存以后,问题依旧. 然后考虑到执行权限的问题,于是把默认的4个账户(创立

文件/目录权限设置命令chmod的详细用法

chmod是文件/目录权限设置的命令,在Linux中经常遇到,本博文以下总结chmod的详细用法.  Linux/Unix的档案调用权限分为三级,即档案拥有者user.群组group.其他other.u表示该档案的拥有者,g表示与该档案的拥有者属于同一个群体(group)者,o表示其他以外的人,a表示这三者皆是. + 表示增加权限.- 表示取消权限.= 表示唯一设定权限. r表示可读取,w表示可写入,x表示可执行.   举例说明: (1).将档案file1.txt 设为所有人皆可读取: chmo

iis 7设置目录权限需要注意的问题

  前段时间在windows server 2008 r2 (x64)服务器上配置好IIS 7.5+PHP(FASTCGI)+MYSQL以后,运行一直还算正常.直到昨天因为在线备份mysql失败而焦头烂额. php显示执行成功,但是显示执行时间是一个天文数字--这样的情况在以前配置nginx或者apache的php环境下也遇见过,原因无非是php内存限制过小,或者超时时间设置过小所致.然而修改fastcgi执行时间,加大php内存以后,问题依旧. 然后考虑到执行权限的问题,于是把默认的4个账户(

解决SELinux对网站目录权限控制的不当的问题

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dgd2010.blog.51cto.com/1539422/831098 前言:本文主要介绍了因为SELinux对网站目录权限控制的不当而引起网站无法正常操作和访问的问题. 正文开始:今天下午闲着没有事做于是突然兴起想尝试安装下Drupal.以前用Wordpress做博客久了,总想着尝尝新. 按照Installtion Guide提示的安装步骤进行操作如下: wget http