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