【问题标题】:Get all the user's groups from active directory in C#从 C# 的活动目录中获取所有用户的组
【发布时间】:2015-06-14 14:39:41
【问题描述】:

我正在尝试使用 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 用户开头的行上收到一条错误消息,指出无法连接服务器。我正在从服务器本身运行我的代码,所以我可以连接它。

我做错了什么?

提前谢谢你!

【问题讨论】:

  • 您是从 Web 应用程序中执行此操作的吗?
  • 是的,我是。我正在使用 asp 应用程序

标签: c# active-directory active-directory-group


【解决方案1】:

要连接 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-10
    • 1970-01-01
    • 2018-11-06
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多