[英]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.