Freigeben über


Verzeichnisobjektauswahl

Das Dialogfeld "Verzeichnisobjektauswahl" ermöglicht es einem Benutzer, ein oder mehrere Objekte aus dem globalen Katalog, einer Domäne oder einem Computer oder einer Arbeitsgruppe auszuwählen. Die Objekttypen, aus denen ein Benutzer auswählen kann, umfassen Benutzer-, Kontakt-, Gruppen- und Computerobjekte. Weitere Informationen zu Active Directory Domain Services finden Sie unter Active Directory Domain Services.

So zeigen Sie ein Dialogfeld für die Objektauswahl an:

  1. Rufen Sie die CoCreateInstance oder CoCreateInstanceEx--Funktion auf, um eine Instanz der IDsObjectPicker- Schnittstelle zu erstellen.
  2. Rufen Sie die IDsObjectPicker::Initialize-Methode auf, um das Dialogfeld zu initialisieren.
  3. Rufen Sie die IDsObjectPicker::InvokeDialog-Methode auf, um das Dialogfeld anzuzeigen.
  4. Rufen Sie die IDataObject::GetData-Methode der IDataObject Instanz auf, die vom Dialogfeld "Objektauswahl" zurückgegeben wird, um die CFSTR_DSOP_DS_SELECTION_LIST Daten abzurufen. Das CFSTR_DSOP_DS_SELECTION_LIST Zwischenablageformat stellt eine HGLOBAL- bereit, die eine DS_SELECTION_LIST Struktur enthält. Die DS_SELECTION_LIST Struktur enthält Daten zu den im Dialogfeld "Objektauswahl" ausgewählten Elementen.

Wenn der Sicherheitsbezeichner (SECURITY Identifier, SID) für ein Objekt erforderlich ist, sollte dies direkt von der Objektauswahl angefordert werden, indem das objectSID-attribut Attribut zur Liste der Attribute hinzugefügt wird, die für das ausgewählte Objekt abgerufen werden sollen. Das Übergeben des zurückgegebenen Objektnamens an die LsaLookupNames oder LookupAccountName Funktion wird nicht empfohlen, da die Namenssuche redundant ist und in einigen Fällen fehlschlägt.

Wenn ein Verweis auf ausgewählte Objekte gespeichert wird, sollte der unterscheidungsfähige Name nicht gespeichert werden, da das Objekt möglicherweise verschoben, umbenannt oder aufgrund von Gebietsschemaunterschieden geändert werden kann. Für Sicherheitsprinzipale sollte die objectSID- für das Objekt angefordert und sicher gespeichert werden. Wenn der Name des Sicherheitsprinzipals später benötigt wird, kann er mit der funktion LookupAccountSid abgerufen werden. Für alle anderen Objekte sollte die objectGUID- angefordert und gespeichert werden.

Initialisierung

Wenn das Dialogfeld für die Objektauswahl initialisiert wird, wird eine Reihe von Bereichstypen und Filtern angegeben. Die angegebenen Bereichstypen bestimmen beispielsweise die Speicherorte, Domänen oder Computer, aus denen ein Benutzer Objekte auswählen kann. Die Filter bestimmen die Objekttypen, die ein Benutzer aus einem bestimmten Bereichstyp auswählen kann. Weitere Informationen finden Sie im Abschnitt "Bereiche und Filter" weiter unten.

Standardmäßig kann ein Benutzer ein einzelnes Objekt im Dialogfeld "Verzeichnisobjektauswahl" auswählen. Um mehrere Auswahlmöglichkeiten zu aktivieren, legen Sie das DSOP_FLAG_MULTISELECT Flag im flOptions Element der DSOP_INIT_INFO Struktur fest, wenn das Dialogfeld initialisiert wurde.

Bereiche und Filter

Die Suchen in Dropdownliste enthält die Bereiche, aus denen ein Benutzer Objekte auswählen kann. Bei einem Bereich handelt es sich um eine Domäne, einen Computer, eine Arbeitsgruppe oder einen globalen Katalog, in dem Daten gespeichert werden und zugriff auf eine Reihe verfügbarer Objekte bereitgestellt werden. Die Einträge in der Bereichsliste sind von den Bereichstypen und dem Zielcomputer abhängig, der angegeben wurde, als die IDsObjectPicker::Initialize Methode zuletzt aufgerufen wurde, um das Dialogfeld für die Objektauswahl zu initialisieren.

Ein Bereichstyp ist eine generische Kategorie von Bereichen, z. B. alle Domänen im Unternehmen, zu denen der Zielcomputer gehört, oder der globale Katalog für das Unternehmen des Zielcomputers oder den Zielcomputer selbst. Für jeden angegebenen Bereichstyp verwendet das Dialogfeld den Kontext des Zielcomputers, um die Bereichslisteneinträge zu bestimmen.

Die IDsObjectPicker::Initialize-Methode verwendet einen Zeiger auf eine DSOP_INIT_INFO Struktur, die ein Array von DSOP_SCOPE_INIT_INFO Strukturen enthält. Jeder Eintrag im DSOP_SCOPE_INIT_INFO Array gibt einen oder mehrere Bereichstypen sowie anwendbare Filter und andere Attribute an. Die Filter bestimmen die Objekttypen, z. B. Benutzer, Gruppen, Kontakte und Computer, die der Benutzer aus einem bestimmten Bereichstyp auswählen kann. Wenn der Benutzer einen Bereich aus der Liste auswählt, wendet das Dialogfeld die Filter für diesen Bereichstyp an, um eine Liste von Objekten anzuzeigen, aus denen der Benutzer auswählen kann.

Jede DSOP_SCOPE_INIT_INFO-Struktur enthält eine DSOP_FILTER_FLAGS Struktur, die die Filter für diesen Bereichstyp angibt. Die DSOP_FILTER_FLAGS Struktur unterscheidet zwischen Bereichen auf der up- und down-Level-Ebene:

  • Ein Bereich auf oberster Ebene ist ein globaler Katalog oder eine Domäne, die die ADSI-LDAP-Anbieterunterstützt.
  • Ein Bereich auf der unteren Ebene umfasst Arbeitsgruppen und alle einzelnen Computer. Im Dialogfeld wird der ADSI WinNT-Anbieter verwendet, um auf einen Bereich auf der unteren Ebene zuzugreifen.

Es gibt zwei Gruppen von Filterkennzeichnungen, die für die Verwendung in der DSOP_FILTER_FLAGS-Struktur definiert sind: eine für Bereiche auf oberster Ebene und eine für Bereiche auf der unteren Ebene. Das Element "Uplevel" der DSOP_FILTER_FLAGS-Struktur ist eine DSOP_UPLEVEL_FILTER_FLAGS Struktur, die die Filter für Bereiche auf oberster Ebene angibt. Das flDownlevel- Mitglied der DSOP_FILTER_FLAGS-Struktur ist eine Reihe von Flags, die die Filter für Bereiche auf unterer Ebene angeben.