从 C# 中的活动目录中获取所有用户的组

本文关键字:用户 获取 活动 | 更新日期: 2023-09-27 17:56:13

我正在尝试使用 c# 代码获取活动目录中所有用户的组。

这是我的代码:

private List<GroupPrincipal> GetGroups()
{
    string userName = User.Identity.Name;
    string host = Request.Url.Host.ToLower();
    List<GroupPrincipal> result = new List<GroupPrincipal>();
    UserPrincipal user = UserPrincipal.FindByIdentity(new PrincipalContext(ContextType.Domain, host), IdentityType.SamAccountName, userName);
    foreach (GroupPrincipal group in user.GetGroups())
    {
        result.Add(group);
    }
    return result;
}

我在以 UserPrincipal 用户开头的行上收到错误,指出服务器无法连接。我正在从服务器本身运行我的代码,以便我可以连接它。

我做错了什么?

提前谢谢你!

从 C# 中的活动目录中获取所有用户的组

若要连接 Active Directory,请创建 PrincipalContext 对象。

PrincipalContext insPrincipalContext = new PrincipalContext(ContextType.Domain, "MyDomain", 
                                   "DC=MyDomain,DC=com");

获取所有组的代码:创建 GroupPrincipal 对象并调用 SearchGroups(),它返回给定域的所有组的列表。

     private void ListGroups(){
       GroupPrincipal insGroupPrincipal = new GroupPrincipal(insPrincipalContext);
       insGroupPrincipal.Name = "*";
       SearchGroups(insGroupPrincipal);}
    private void SearchGroups(GroupPrincipal parGroupPrincipal)
    {
        List<Principal> oList = new List<Principal>();
        PrincipalSearcher insPrincipalSearcher = new PrincipalSearcher();
        insPrincipalSearcher.QueryFilter = parGroupPrincipal;
        PrincipalSearchResult<Principal> results = insPrincipalSearcher.FindAll();
        foreach (Principal p in results)
        {
            oList.Add(p);
        }
    }

此链接还将帮助您 -http://www.codeproject.com/Articles/38344/Using-System-DirectoryServices-AccountManagement