我怎么能从AD得到一个用户的组成员资格,最好使用与我用来获取用户的Department属性相同的模式,如下所示? 我已经find了几个例子,但是所有示例技术的相交集是非常小的,缺乏这个部门查询的紧密性和简单性:
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();
你在.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文章 ,在处理AD时,.NET 3.5中的更多新功能。
在.NET 2.0中,事情变得更加混乱