Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Grupy można umieszczać w dowolnym kontenerze lub jednostce organizacyjnej (OU) w domenie, a także w głównej strukturze domeny. Oznacza to, że grupy mogą znajdować się w wielu lokalizacjach w hierarchii katalogów. W związku z tym istnieją dwie opcje wyliczania grup:
Wymień grupy znajdujące się bezpośrednio w kontenerze, jednostkach organizacyjnych lub w korzeniu domeny.
Jawnie powiąż się z obiektem kontenera, który zawiera grupy do wyliczenia, ustawiając filtr, który zawiera "grupy" jako klasę, używając właściwości IADsContainer.Filter, a następnie użyj metody IADsContainer::get__NewEnum, aby wyliczyć obiekty grup.
Ta technika wylicza grupy zawarte bezpośrednio w kontenerze lub obiekcie jednostki organizacyjnej. Jeśli kontener zawiera inne kontenery, które mogą potencjalnie zawierać inne grupy, należy powiązać je z tymi kontenerami i cyklicznie wyliczać grupy w tych kontenerach. Aby manipulować obiektami grupy i tylko do odczytu określonych właściwości, użyj głębokiego wyszukiwania opisanego w opcji 2.
Ponieważ wyliczenie zwraca wskaźniki do obiektów COM ADSI reprezentujących każdy obiekt grupy, można wywołać QueryInterface, aby uzyskać identyfikatory IADs, IADsGroupi IADsPropertyList wskaźniki interfejsu do obiektu grupy; oznacza to, że można uzyskać wskaźniki interfejsu do każdego wyliczonego obiektu grupy w kontenerze bez konieczności jawnego powiązania z każdym obiektem grupy. Aby wykonywać operacje na wszystkich grupach bezpośrednio w kontenerze, wyliczenie nie wymaga powiązania z każdą grupą w celu wywołania identyfikatorów lub metod IADsGroup. Aby pobrać określone właściwości z grup, użyj IDirectorySearch zgodnie z opisem w drugiej opcji.
Wyjątek występuje podczas próby wyliczenia grupy zawierającej członków, którzy są znanymi głównymi podmiotami zabezpieczeń, takimi jak Wszyscy, Uwierzytelnieni użytkownicy, BATCH itd. Ponieważ nie można związać z tymi typami obiektów, nie są one wyświetlane podczas wyliczania grup w zakresie WinNT, mimo że może się wydawać, że są powiązane, ponieważ niektóre metody IADs, takie jak Class, ADsPath i Name, zwracają poprawne wyniki, gdy są wywoływane na wyliczonych elementach członkowskich.
Wykonaj głębokie wyszukiwanie według kryterium "objectCategory=group", aby znaleźć wszystkie grupy w drzewie.
Najpierw zwiąż się z obiektem kontenera, aby rozpocząć wyszukiwanie. Aby na przykład znaleźć wszystkie grupy w domenie, połącz się z korzeniem domeny; aby znaleźć wszystkie grupy w lesie, połącz się z katalogiem globalnym i wyszukaj z korzenia GC.
Następnie użyj IDirectorySearch do wykonywania zapytań przy użyciu filtru wyszukiwania zawierającego (objectCategory=group) i preferencji wyszukiwania ADS_SCOPE_SUBTREE.
Notatka
Wyszukiwanie można wykonać z preferencjami wyszukiwania ADS_SCOPE_ONELEVEL, aby ograniczyć wyszukiwanie do bezpośredniej zawartości powiązanego obiektu kontenera.
IDirectorySearch pobiera tylko wartości określonych właściwości z grup. Aby pobrać wartości, użyj IDirectorySearch. Aby manipulować obiektami grupy zwróconymi z wyszukiwania, należy jawnie się z nimi związować, używając metod IADs lub IADsGroup. W tym celu określ distinguishedName jako jedną z właściwości, które mają być zwracane z wyszukiwania, i użyj zwróconych nazw wyróżniających, aby powiązać z każdą grupą zwróconą w wyszukiwaniu.
Pobierane są tylko określone właściwości. Nie można pobrać wszystkich atrybutów bez jawnego określenia każdego możliwego atrybutu klasy grupy.