2009-12-29 73 views
5

如何从AD获取用户的组成员身份,最好使用与我用来获取用户的Department属性相同的模式,如下所示?我已经找到了几个例子,但是所有实例技术的交集是相当小的,并且缺乏这处查询的气密性和简单性:从Active Directory获取用户的组成员身份

 var adServer = ConfigurationManager.AppSettings["adServer"] ?? "localhost"; 
     var remoteRoot = new DirectoryEntry(GetRootPath(adServer)); 
     var searcher = new DirectorySearcher(remoteRoot, string.Format("(SAMAccountName={0})", shortUserName)); 

     searcher.PropertiesToLoad.Add("Department"); 
     SearchResult result = null; 
     result = searcher.FindOne(); 

回答

6

你在.NET 3.5?如果是的话,它很容易:

PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "YOURDOMAIN"); 

string userName = "yourUser"; 

UserPrincipal user = UserPrincipal.FindByIdentity(ctx, userName); 

PrincipalSearchResult<Principal> results = user.GetAuthorizationGroups(); 

找到你的用户,然后调用.GetAuthorizationGroups()您的用户主体 - 返回用户所属的,包括他的主要组的所有组和所有嵌套组成员。

查看此MSDN article在.NET 3.5中涉及到处理AD时的更多新功能。

在.NET 2.0中,事情变得更加复杂......

+0

谢谢。这是一半的工作,但当我调用GetAuthorizationGroups() – ProfK 2009-12-30 07:30:30

+0

时,您是否在构建主体上下文时指定了NetBIOS域名?出现“无法访问域信息”(类似这样的错误)?例如。 “YOURDOMAIN”,而不是“yourcompany.com”? – 2009-12-30 07:57:26

+0

适合我。为我节省了很多工作!谢谢 – paul 2010-01-29 10:56:55

相关问题