繁体   English   中英

如何区分分配给文件夹安全性的用户和组?

[英]How to distinguish between users and groups assigned to a folder security?

我编写了一个简单的代码来检索文件夹的安全信息,该信息包含用户和组以及它们对文件夹的权限

public void GetSecurityRules(DirectoryInfo directoryInfo)
    {
        DirectorySecurity DSecurity = directoryInfo.GetAccessControl();
        AuthorizationRuleCollection Rules = DSecurity.GetAccessRules(true, true, typeof(NTAccount));


        foreach (FileSystemAccessRule fileSystemAccessRule in Rules)
        {
            Console.WriteLine("User/Group name {0}",fileSystemAccessRule.IdentityReference.Value);
            Console.WriteLine("Permissions: {0}", fileSystemAccessRule.FileSystemRights.ToString());
        }
    }

在行fileSystemAccessRule.IdentityReference.Value我同时获得了用户和组,但我怎么知道该值是代表用户还是组?

据我所知,CLR不会公开这些信息。 您必须手动p /调用LsaLookupSids并检查它将返回的SID_NAME_USE值。 CLR也调用此函数以将SID转换为帐户名,但它会丢弃SID_NAME_USE值。 对于代码,打破您的Reflector,打开mscorlib并查看System.Security.Principal.SecurityIdentifier的内部TranslateToNTAccounts函数如何工作。

作为替代方案,如果您不打算重复执行此类查找,则可能更容易使用WMI - 通过SID查询Win32_Account并检查SIDType成员。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM