我有以下代码。我得到一个用户的目录条目(strpath)。 然后我得到列出用户的组。
如何获得每组中的用户数量?
DirectoryEntry myDE = new System.DirectoryServices.DirectoryEntry(strpath);
object obGroups = myDE.Invoke("Groups");
foreach (object ob in (IEnumerable)obGroups)
{
DirectoryEntry obGpEntry = new DirectoryEntry(ob);
GroupsListBox.Items.Add(obGpEntry.Name );
}
答案 0 :(得分:1)
如果您使用的是.NET 3.5(或者可以升级到它),那么会有一个大规模扩展的System.DirectoryServices.AccountManagement
命名空间,这使得管理用户,组及其成员资格的这些工作变得更加容易。
查看MSDN文章Managing Directory Security Principals in the .NET Framework 3.5,了解S.DS.AM的简介。
您可以获得这样的用户主体:
PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "YOURDOMAIN");
UserPrincipal user = UserPrincipal.FindByIdentity("some user name");
PrincipalSearchResult<Principal> userGroups = user.GetGroups();
foreach (Principal p in myGroups)
{
GroupPrincipal gp = (p as GroupPrincipal);
if (gp != null)
{
int memberCount = gp.Members.Count;
}
}
这样,您可以枚举给定用户拥有的所有组,并枚举这些组,您可以找出每个组有多少成员(用户和其他组)。