Auflisten von Benutzern

Im Gegensatz zu Windows NT 4.0-Domänen können Windows 2000-Benutzer in jedem Container oder einer Organisationseinheit (OE) in einer Domäne sowie im Stammverzeichnis der Domäne platziert werden. Dies bedeutet, dass sich Benutzer an zahlreichen Speicherorten in der Verzeichnishierarchie befinden können. Daher haben Sie zwei Möglichkeiten zum Aufzählen von Benutzern:

  • Listen Sie die Benutzer auf, die direkt in einem Container, einer Organisationseinheit oder im Stammverzeichnis der Domäne enthalten sind:

    Binden Sie explizit an das Containerobjekt, das die Benutzer enthält, die Sie aufzählen möchten, legen Sie mithilfe der IADsContainer.Filter-Eigenschaft einen Filter fest, der "user" als Klasse enthält, und verwenden Sie die IADsContainer::get__NewEnum-Methode , um die Benutzerobjekte aufzulisten.

    Dieses Verfahren kann verwendet werden, um Benutzer aufzulisten, die direkt in einem Container oder Organisationseinheitsobjekt enthalten sind. Wenn der Container andere Container enthält, die möglicherweise andere Benutzer enthalten können, müssen Sie an diese Container binden und die Benutzer in diesen Containern rekursiv auflisten. Wenn Sie die Benutzerobjekte nicht bearbeiten müssen und nur bestimmte Eigenschaften lesen müssen, verwenden Sie die unter Option 2 beschriebene Tiefensuche.

    Da die Enumeration Zeiger auf ADSI-COM-Objekte zurückgibt, die jedes Benutzerobjekt darstellen, können Sie QueryInterface aufrufen, um IADs, IADsUser und IADsPropertyList-Schnittstellenzeiger auf das Benutzerobjekt abzurufen. Dies bedeutet, dass Sie Schnittstellenzeiger auf jedes aufgelistete Benutzerobjekt in einem Container abrufen können, ohne explizit an jedes Benutzerobjekt binden zu müssen. Um Vorgänge für alle Benutzer direkt in einem Container auszuführen, vermeidet die Enumeration die Bindung an jeden Benutzer, um IADs oder IADsUser-Methoden aufzurufen. Um bestimmte Eigenschaften von Benutzern abzurufen, verwenden Sie IDirectorySearch , wie in Option 2 beschrieben.

  • Führen Sie eine ausführliche Suche nach (&(objectClass=user)(objectCategory=person)) durch, um alle Benutzer in einer Struktur zu finden:

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

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

    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 von Benutzern ab. Verwenden Sie IDirectorySearch, um Werte abzurufen. Um die von einer Suche zurückgegebenen Benutzerobjekte zu bearbeiten, d. h. Sie möchten IADs oder IADsUser-Methoden verwenden, müssen Sie explizit an sie binden. 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 jeden in der Suche zurückgegebenen Benutzer zu binden.

    Es werden nur bestimmte Eigenschaften abgerufen. Sie können nicht alle Attribute abrufen, ohne jedes mögliche Attribut der Benutzerklasse explizit anzugeben.