Freigeben über


Auflisten von Gruppen in einer Domäne

Gruppen können in jedem Container oder jeder Organisationseinheit (OU) in einer Domäne sowie im Stammverzeichnis der Domäne platziert werden. Dies bedeutet, dass Sich Gruppen an zahlreichen Speicherorten in der Verzeichnishierarchie befinden können. Daher haben Sie zwei Möglichkeiten zum Aufzählen von Gruppen:

  1. Listen Sie die Gruppen auf, die direkt in einem Container, einer Organisationseinheit oder im Stammverzeichnis der Domäne enthalten sind.

    Binden Sie explizit an das Containerobjekt, das die aufzuzählenden Gruppen enthält, legen Sie mithilfe der IADsContainer.Filter-Eigenschaft einen Filter fest, der "groups" enthält, und verwenden Sie die IADsContainer::get__NewEnum-Methode , um die Gruppenobjekte aufzulisten.

    Dieses Verfahren listet Gruppen auf, die direkt in einem Container- oder Organisationseinheitsobjekt enthalten sind. Wenn der Container andere Container enthält, die möglicherweise andere Gruppen enthalten können, müssen Sie an diese Container binden und die Gruppen in diesen Containern rekursiv auflisten. Um die Gruppenobjekte zu bearbeiten und bestimmte Eigenschaften schreibgeschützt zu bearbeiten, verwenden Sie die in Option 2 beschriebene Tiefsuche.

    Da die Enumeration Zeiger auf ADSI-COM-Objekte zurückgibt, die jedes Gruppenobjekt darstellen, können Sie QueryInterface aufrufen, um IADs, IADsGroup und IADsPropertyList-Schnittstellenzeiger auf das Gruppenobjekt abzurufen. Das heißt, Sie können Schnittstellenzeiger auf jedes aufgezählte Gruppenobjekt in einem Container abrufen, ohne explizit an jedes Gruppenobjekt binden zu müssen. Um Vorgänge für alle Gruppen direkt in einem Container auszuführen, erfordert die Enumeration keine Bindung an jede Gruppe, um IADs - oder IADsGroup-Methoden aufzurufen. Um bestimmte Eigenschaften aus Gruppen abzurufen, verwenden Sie IDirectorySearch , wie in der zweiten Option beschrieben.

    Eine Ausnahme tritt auf, wenn Sie versuchen, eine Gruppe aufzulisten, die Mitglieder enthält, die "wellKnown"-Sicherheitsprinzipale sind, z. B. "Jeder", "Authentifizierte Benutzer", "BATCH" usw. Da Sie nicht an diese Objekttypen binden können, werden sie nicht aufgeführt, wenn Sie Gruppen im WinNT-Bereich aufzählen, auch wenn sie möglicherweise gebunden werden, da bestimmte IADs-Methoden wie Class, ADsPath und Name korrekte Ergebnisse zurückgeben, wenn sie auf enumerierten Membern aufgerufen werden.

  2. Führen Sie eine ausführliche Suche nach "objectCategory=group" aus, um alle Gruppen in einer Struktur zu finden.

    Binden Sie zunächst an das Containerobjekt, an dem die Suche beginnen soll. Um beispielsweise alle Gruppen in einer Domäne zu finden, binden Sie an das Stammverzeichnis der Domäne. Um alle Gruppen in der Gesamtstruktur zu finden, binden Sie an den globalen Katalog, und suchen Sie über den Stamm der Gesamtstruktur.

    Verwenden Sie dann IDirectorySearch , um mithilfe eines Suchfilters abzufragen, der (objectCategory=group) und die Sucheinstellung von ADS_SCOPE_SUBTREE enthält.

    Hinweis

    Sie können eine Suche mit der Sucheinstellung ADS_SCOPE_ONELEVEL ausführen, um die Suche auf den direkten Inhalt des Containerobjekts zu beschränken, an das Sie gebunden sind.

     

    IDirectorySearch ruft nur die Werte bestimmter Eigenschaften aus Gruppen ab. Verwenden Sie IDirectorySearch, um Werte abzurufen. Um die von einer Suche zurückgegebenen Gruppenobjekte zu bearbeiten, d. h. um IADs oder IADsGroup-Methoden zu verwenden, binden Sie explizit an sie. Geben Sie hierzu distinguishedName als eine der Eigenschaften an, die von der Suche zurückgegeben werden sollen, und verwenden Sie die zurückgegebenen distinguished Names, um an jede in der Suche zurückgegebene Gruppe zu binden.

    Es werden nur bestimmte Eigenschaften abgerufen. Sie können nicht alle Attribute abrufen, ohne alle möglichen Attribute der Gruppenklasse explizit anzugeben.