快捷搜索:

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,很轻易看懂上面的代码。 然则貌似这个法度榜样必要以治理员身份来运行。^_^

您可能还会对下面的文章感兴趣: