簡體   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