在ActiveDirectory和.NET 3.5中确定用户所属的所有组(包括嵌套组),可以使用以下方法:
首先,需要引入System.DirectoryServices.AccountManagement命名空间,然后使用PrincipalContext类创建一个连接到ActiveDirectory的上下文,最后使用UserPrincipal类获取用户并使用GetAuthorizationGroups方法获取用户所属的所有组。
示例代码:
using System;
using System.DirectoryServices.AccountManagement;
public static List<GroupPrincipal> GetUserGroups(string userName)
{
using (var context = new PrincipalContext(ContextType.Domain))
{
using (var user = UserPrincipal.FindByIdentity(context, userName))
{
if (user == null)
{
throw new ArgumentException("User not found");
}
return user.GetAuthorizationGroups().ToList();
}
}
}
首先,需要引入System.DirectoryServices命名空间,然后使用DirectoryEntry类创建一个连接到ActiveDirectory的对象,最后使用DirectorySearcher类搜索用户并使用GetGroups方法获取用户所属的所有组。
示例代码:
using System;
using System.DirectoryServices;
using System.Collections.Generic;
public static List<string> GetUserGroups(string userName)
{
var groups = new List<string>();
var de = new DirectoryEntry("LDAP://yourdomain.com");
var ds = new DirectorySearcher(de);
ds.Filter = string.Format("(&(objectClass=user)(sAMAccountName={0}))", userName);
ds.PropertiesToLoad.Add("memberOf");
var result = ds.FindOne();
if (result != null)
{
var memberOf = result.Properties["memberOf"];
foreach (string group in memberOf)
{
groups.Add(group);
}
}
return groups;
}
这两种方法都可以获取用户所属的所有组(包括嵌套组)。你可以根据自己的需求选择合适的方法。
领取专属 10元无门槛券
手把手带您无忧上云