如何使用C#检查文件的读访问权限

时间:2012-10-24 13:41:27

标签: c# windows security

给定一个文件,我需要列出所有使用C#和.NET framework 4对该文件具有读访问权限的用户。不想添加或列出任何其他权限。 假设目录是本地目录,本地用户就足够了。

1 个答案:

答案 0 :(得分:0)

我不确定是否有一种简单的方法可以获得该列表,但这是一个想法。您可以循环访问控制规则并检查哪些用户可以读取该文件。请注意,某些规则允许访问,而其他拒绝。这是一个起点:

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

...

FileSecurity security = File.GetAccessControl(@"C:\MyFolder\My File.txt");

AuthorizationRuleCollection acl = security.GetAccessRules(
   true, true, typeof(System.Security.Principal.NTAccount));
foreach (FileSystemAccessRule ace in acl)
{
   var user = ace.IdentityReference.Value;
   var rights = ace.FileSystemRights;
   var allowOrDeny = ace.AccessControlType;
   // ...
}

查看FileSystemAccessRule以获取更多信息。