Delen via


Mapobjectkiezer

Met het dialoogvenster Mapobjectkiezer kan een gebruiker een of meer objecten selecteren uit de globale catalogus, een domein of computer of een werkgroep. De objecttypen waaruit een gebruiker kan selecteren, zijn onder andere gebruikers-, contactpersoon-, groeps- en computerobjecten. Zie Active Directory Domain Servicesvoor meer informatie over Active Directory Domain Services.

Het dialoogvenster Objectkiezer weergeven:

  1. Roep de functie CoCreateInstance of CoCreateInstanceEx aan om een exemplaar van de IDsObjectPicker-interface te maken.
  2. Roep de IDsObjectPicker::Initialiseer methode om het dialoogvenster te initialiseren.
  3. Roep de methode IDsObjectPicker::InvokeDialog aan om het dialoogvenster weer te geven.
  4. Roep de methode IDataObject::GetData van het IDataObject- exemplaar aan dat is geretourneerd door het dialoogvenster objectkiezer om de CFSTR_DSOP_DS_SELECTION_LIST gegevens op te halen. De CFSTR_DSOP_DS_SELECTION_LIST klembordindeling biedt een HGLOBAL- met een DS_SELECTION_LIST structuur. De DS_SELECTION_LIST structuur bevat gegevens over de items die zijn geselecteerd in het dialoogvenster objectkiezer.

Als de beveiligings-id (SID) vereist is voor een object, moet dit rechtstreeks vanuit de objectkiezer worden aangevraagd door het kenmerk objectSID toe te voegen aan de lijst met kenmerken die voor het geselecteerde object moeten worden opgehaald. Het doorgeven van de geretourneerde objectnaam aan de LsaLookupNames of LookupAccountName functie wordt niet aanbevolen omdat de naamzoekactie overbodig is en in sommige gevallen kan mislukken.

Als een verwijzing naar geselecteerde objecten wordt opgeslagen, mag de DN-naam niet worden opgeslagen omdat het object kan worden verplaatst, de naam ervan kan worden gewijzigd of kan worden gewijzigd vanwege verschillen in landinstellingen. Voor beveiligingsprinciplen moet de objectSID- worden aangevraagd voor het object en veilig worden opgeslagen. Als de naam van de beveiligingsprincipaal later nodig is, kan deze worden opgehaald met de functie LookupAccountSid. Voor alle andere objecten moet de objectGUID- worden aangevraagd en opgeslagen.

Initialisatie

Wanneer het dialoogvenster objectkiezer wordt geïnitialiseerd, wordt een set bereiktypen en filters opgegeven. De opgegeven bereiktypen bepalen bijvoorbeeld de locaties, domeinen of computers waaruit een gebruiker objecten kan selecteren. De filters bepalen de typen objecten die een gebruiker kan selecteren uit een bepaald bereiktype. Zie de sectie Bereiken en filters hieronder voor meer informatie.

Standaard kan een gebruiker één object selecteren in het dialoogvenster mapobjectkiezer. Als u meerdere selecties wilt inschakelen, stelt u de vlag DSOP_FLAG_MULTISELECT in de flOptions- lid van de DSOP_INIT_INFO-structuur in wanneer het dialoogvenster is geïnitialiseerd.

Bereiken en filters

De Zoeken in vervolgkeuzelijst bevat de bereiken waaruit een gebruiker objecten kan selecteren. Een bereik is een domein, computer, werkgroep of globale catalogus waarin gegevens worden opgeslagen en die toegang biedt tot een set beschikbare objecten. De vermeldingen in de bereiklijst zijn afhankelijk van de bereiktypen en de doelcomputer die is opgegeven wanneer de IDsObjectPicker::Initialize methode voor het laatst is aangeroepen om het dialoogvenster objectkiezer te initialiseren.

Een bereiktype is een algemene categorie bereiken, zoals alle domeinen in de onderneming waartoe de doelcomputer behoort, of de globale catalogus voor de onderneming van de doelcomputer, of de doelcomputer zelf. Voor elk opgegeven bereiktype gebruikt het dialoogvenster de context van de doelcomputer om de vermeldingen in de bereiklijst te bepalen.

De methode IDsObjectPicker::Initialize methode gebruikt een aanwijzer naar een DSOP_INIT_INFO structuur die een matrix van DSOP_SCOPE_INIT_INFO structuren bevat. Elke vermelding in de DSOP_SCOPE_INIT_INFO matrix specificeert een of meer bereiktypen, evenals toepasselijke filters en andere kenmerken. De filters bepalen de typen objecten, zoals gebruikers, groepen, contactpersonen en computers, die de gebruiker kan selecteren uit een bepaald bereiktype. Wanneer de gebruiker een bereik in de lijst selecteert, worden in het dialoogvenster de filters voor dat bereiktype toegepast om een lijst met objecten weer te geven waaruit de gebruiker kan selecteren.

Elke DSOP_SCOPE_INIT_INFO structuur bevat een DSOP_FILTER_FLAGS structuur waarmee de filters voor dat bereiktype worden opgegeven. De DSOP_FILTER_FLAGS structuur maakt onderscheid tussen bereiken op niveau omhoog en omlaag:

  • Een bereik op het hoogste niveau is een globale catalogus of een domein dat ondersteuning biedt voor de ADSI-LDAP-provider.
  • Een bereik op down-level omvat werkgroepen en alle afzonderlijke computers. In het dialoogvenster wordt de ADSI WinNT-provider gebruikt om toegang te krijgen tot een bereik op een lager niveau.

Er zijn twee sets filtervlagmen gedefinieerd voor gebruik in de DSOP_FILTER_FLAGS-structuur: één voor bereiken op hoger niveau en één voor bereiken op down-level. De uplevel lid van de DSOP_FILTER_FLAGS structuur is een DSOP_UPLEVEL_FILTER_FLAGS structuur waarmee de filters voor bereiken op het hoogste niveau worden opgegeven. Het flDownlevel lid van de DSOP_FILTER_FLAGS-structuur is een set vlaggen waarmee de filters voor bereiken op down-level worden opgegeven.