Вы должны запустить другой поиск, используя следующий фильтр поиска
string.Format("(&(objectCategory=group)(objectClass=group)(primaryGroupToken={0}))", singleRes.Properties["primaryGroupID"]);
primaryGroupToken
- это вычисляемый атрибут, который автоматически создается Active Directory при создании группы.primaryGroupID
, назначенный пользователю, сохраняет это значение.
На самом деле, если вы хотите простой способ действительно , я бы предложил UserPrincipal.GetGroups действительно легко,Единственное, что вы можете найти его только в .NET 3.5 или более поздней версии.
using (PrincipalContext context = new PrincipalContext(ContextType.Domain, "yourdomain.com"))
{
using (UserPrincipal user = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, "YourUser"))
{
foreach (Principal p in user.GetGroups())
{
Console.WriteLine(p.Name);
}
}
}
GetGroups
возвращает вам только группу, в которой непосредственно содержится ваш пользователь, включая его основную группу.Если вы хотите получить все вложенные группы, вы можете использовать GetAuthorizationGroups
.