Поскольку вы работаете в .NET 3.5 и выше, вам следует проверить пространство имен System.DirectoryServices.AccountManagement
(S.DS.AM). Читайте все об этом здесь:
Управление принципами безопасности каталогов в .NET Framework 3.5
Как правило, добавьте ссылку на сборку System.DirectoryServices.AccountManagement
, и тогда вы сможете определить контекст домена и легко найти пользователей и / или группы в AD:
using System.DirectoryServices.AccountManagement;
public List<GroupPrincipal> GetGroupsForUser(string username)
{
List<GroupPrincipal> result = new List<GroupPrincipal>();
// set up domain context - if you do a lot of requests, you might
// want to create that outside the method and pass it in as a parameter
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
// find user by name
UserPrincipal user = UserPrincipal.FindByIdentity(username);
// get the user's groups
if(user != null)
{
foreach(GroupPrincipal gp in user.GetAuthorizationGroups())
{
result.Add(gp);
}
}
return result;
}
Новый S.DS.AM позволяет очень легко играть с пользователями и группами в AD: