Полагаю, вы сможете сделать это в S.DS.AM.И UserPrincipal
, и GroupPrincipal
, в конечном счете, происходят от Principal
, поэтому, если вы передадите "общий" принципал поисковику, вы должны вернуть и пользователей, и группы (и компьютеры).
Единственная сложность заключается в том, что Principal
является абстрактным классом, поэтому вы не можете напрямую создать его экземпляр - вам нужно сначала получить UserPrincipal
и "извлечь" обобщенный Principal
из этого:
// set up dummy UserPrincipal
UserPrincipal qbeUser = new UserPrincipal(ctx);
// get the generic Principal from that - set the "Name" to search for
Principal userOrGroup = qbeUser as Principal;
userOrGroup.Name = "SomeName";
// create a PrincipalSearcher based on that generic principal
PrincipalSearcher searcher = new PrincipalSearcher(userOrGroup);
// enumerate the results - you need to check what kind of principal you get back
foreach (Principal found in searcher.FindAll())
{
// is it a UserPrincipal - do what you need to do with that...
if (found is UserPrincipal)
{
......
}
else if (found is GroupPrincipal)
{
// if it's a group - do whatever you need to do with a group....
}
}