列出有权访问文件夹的所有用户

问题描述 投票:0回答:0

我需要生成有权访问 Windows 文件夹的用户名列表。

我用过:

DirectoryInfo di = new DirectoryInfo("c:\path");
DirectorySecurity acl = di.GetAccessControl(AccessControlSections.All);
AuthorizationRuleCollection rules = acl.GetAccessRules(true, true, typeof(NTAccount));
foreach (AuthorizationRule rule in rules)
{
   Console.WriteLine(string.Format("Rule:{0}", rule.IdentityReference.));
}

这将为我提供有权访问的组列表:

Rule:NT AUTHORITY\SYSTEM
Rule:BUILTIN\Administrators
Rule:domedomain\Administrators
etc..

我尝试过将用户与组匹配:

    using (PrincipalContext AD = new PrincipalContext(ContextType.Domain, "domainname"))
    {
       using (UserPrincipal UP = UserPrincipal.FindByIdentity(AD, appOptions.Username))
       {    
System.DirectoryServices.AccountManagement.PrincipalSearchResult<System.DirectoryServices.AccountManagement.Principal> groups = UP.GetGroups(AD);
        foreach (var g in groups.ToList())
         Console.WriteLine(g.SamAccountName + " + " + g.Sid);
        }
     }

这给了我一个列表,例如:

Domain Users
Contractors
Administrators
etc

目录中的规则列表与用户的组列表不匹配。我应该做什么。

我需要一个可以指定路径的函数,它告诉我具有访问权限的用户名列表。或者,我可以提供用户名来检查他们是否有权访问。我没有密码,所以我无法冒充用户。

c# windows file-permissions
© www.soinside.com 2019 - 2024. All rights reserved.