我使用以下代码从一个组中获取成员。
private static List<string> GetGroupMembers(string groupName)
{
Tracer.LogEntrace(groupName);
List<string> retVal = new List<string>();
GroupPrincipal groupPrincipal =
GroupPrincipal.FindByIdentity(
new PrincipalContext(ContextType.Domain),
IdentityType.SamAccountName,
groupName);
PrincipalSearchResult<Principal> principleSearchResult =
groupPrincipal.GetMembers(true);
if (principleSearchResult != null)
{
try
{
foreach (Principal item in principleSearchResult)
retVal.Add(item.DistinguishedName);
}
catch (Exception ex)
{
Tracer.Log(ex.Message);
}
}
else
{
//Do Nothing
}
Tracer.LogExit(retVal.Count);
return retVal;
}
它适用于所有组,但当它来到Users组时,我收到以下错误
“发生错误(87) 枚举组。小组的 SID无法解决。“
答案 0 :(得分:1)
Users
不是群组 - 它是一个容器。这就是为什么你不能像群组一样枚举它 - 你必须像OU(组织单位)那样枚举它。
类似的东西:
// bind to the "Users" container
DirectoryEntry deUsers = new DirectoryEntry("LDAP://CN=Users,DC=yourcompany,DC=com");
// enumerate over its child entries
foreach(DirectoryEntry deChild in deUsers.Children)
{
// do whatever you need to do to those entries
}