0

我有以下代码。我得到一个用户的目录条目(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 );
}
4

1 回答 1

1

如果您使用的是 .NET 3.5(或可以升级到它),则有一个大规模扩展的System.DirectoryServices.AccountManagement命名空间,使管理用户、组及其成员的这些工作变得更加容易。

查看 MSDN 文章管理 .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;
    }
}

这样,您可以枚举给定用户拥有的所有组,并枚举这些组,您可以找出每个组有多少成员(用户和其他组)。

于 2010-06-07T19:46:21.487 回答