Jeśli jesteś na .NET 3.5 iw górę, należy zapoznać się z nazw (S.DS.AM) System.DirectoryServices.AccountManagement
. Przeczytać o tym tutaj:
Zasadniczo, można określić kontekst domeny i łatwo znaleźć użytkowników i/lub grupy w AD:
// set up domain context
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
// find a user
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, "SomeUserName");
if(user != null)
{
// do something here....
}
// find the group in question
GroupPrincipal group = GroupPrincipal.FindByIdentity(ctx, "YourGroupNameHere");
// if found....
if (group != null)
{
// iterate over members
foreach (Principal p in group.GetMembers())
{
Console.WriteLine("{0}: {1}", p.StructuralObjectClass, p.DisplayName);
// do whatever you need to do to those members
}
}
nowy S.DS.AM ułatwia zabawę z użytkownikami i grupami w AD:
Konta komputera będą wyświetlane jako ComputerPrincipal
(pochodzące z Principal
) - dzięki czemu można z łatwością rozdzielić konta użytkowników i komputerów.
Jeśli nie możesz lub nie chcesz przejść do S.DS.AM - możesz również rozdzielić użytkownika i komputery, używając parametru objectCategory
zamiast obiektu objectClass w filtrze LDAP. objectCategory
i tak jest korzystny, ponieważ jest indeksowany, a nie wielowartościowy - więc wydajność zapytań będzie znacznie lepsza.
Dla prawdziwego użytkownika użyj objectCategory = Person
, natomiast dla komputera użyj objectCategory = Computer
w filtrze LDAP.