2015-06-14 84 views
0

我试图用c#代码获取活动目录中的所有用户组。从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用户启动该行收到一个错误。我从服务器上运行我的代码,以便连接它。

我到底做错了什么?

预先感谢您!

+0

你从Web应用程序这样做呢? – Garett

+0

是的,我是。我正在使用asp应用程序 –

回答

0

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

相关问题