Sélecteur d’objets Directory

La boîte de dialogue sélecteur d’objets d’annuaire permet à un utilisateur de sélectionner un ou plusieurs objets à partir du catalogue global, d’un domaine ou d’un ordinateur ou d’un groupe de travail. Les types d’objets à partir desquels un utilisateur peut sélectionner incluent les objets utilisateur, contact, groupe et ordinateur. Pour plus d’informations sur services de domaine Active Directory, consultez services de domaine Active Directory.

Pour afficher une boîte de dialogue de sélecteur d’objets :

  1. Appelez la fonction CoCreateInstance ou CoCreateInstanceEx pour créer une instance de l’interface IDsObjectPicker.
  2. Appelez la méthode IDsObjectPicker::Initialize pour initialiser la boîte de dialogue.
  3. Appelez la méthode IDsObjectPicker::InvokeDialog pour afficher la boîte de dialogue.
  4. Appelez la méthode IDataObject::GetData du instance IDataObject retourné par la boîte de dialogue du sélecteur d’objets pour récupérer les données CFSTR_DSOP_DS_SELECTION_LIST. Le format CFSTR_DSOP_DS_SELECTION_LIST presse-papiers fournit un HGLOBAL qui contient une structure DS_SELECTION_LIST . La structure DS_SELECTION_LIST contient des données sur les éléments sélectionnés dans la boîte de dialogue du sélecteur d’objets.

Si l’identificateur de sécurité (SID) est requis pour un objet, il doit être demandé directement au sélecteur d’objets en ajoutant l’attribut objectSID à la liste des attributs à récupérer pour l’objet sélectionné. Il n’est pas recommandé de transmettre le nom de l’objet retourné à la fonction LsaLookupNames ou LookupAccountName , car la recherche de nom est redondante et peut échouer dans certains cas.

Si une référence à des objets sélectionnés est enregistrée, le nom unique ne doit pas être enregistré, car l’objet peut se déplacer, être renommé ou peut changer en raison de différences de paramètres régionaux. Pour les principaux de sécurité, l’objectSID doit être demandé pour l’objet et enregistré de manière sécurisée. Si le nom du principal de sécurité est nécessaire ultérieurement, il peut être récupéré avec la fonction LookupAccountSid . Pour tous les autres objets, l’objetGUID doit être demandé et enregistré.

Initialisation

Lorsque la boîte de dialogue du sélecteur d’objets est initialisée, un ensemble de types d’étendue et de filtres est spécifié. Les types d’étendue spécifiés déterminent les emplacements, les domaines ou les ordinateurs, par exemple, à partir desquels un utilisateur peut sélectionner des objets. Les filtres déterminent les types d’objets qu’un utilisateur peut sélectionner à partir d’un type d’étendue donné. Pour plus d’informations, consultez la section Étendues et filtres ci-dessous.

Par défaut, un utilisateur peut sélectionner un seul objet dans la boîte de dialogue sélecteur d’objets d’annuaire. Pour activer plusieurs sélections, définissez l’indicateur DSOP_FLAG_MULTISELECT dans le membre flOptions de la structure DSOP_INIT_INFO lors de l’initialisation de la boîte de dialogue.

Étendues et filtres

La liste déroulante Rechercher dans contient les étendues à partir desquelles un utilisateur peut sélectionner des objets. Une étendue est un domaine, un ordinateur, un groupe de travail ou un catalogue global qui stocke des données sur et fournit l’accès à un ensemble d’objets disponibles. Les entrées de la liste d’étendue dépendent des types d’étendue et de l’ordinateur cible spécifié lors de la dernière appel de la méthode IDsObjectPicker::Initialize pour initialiser la boîte de dialogue sélecteur d’objets.

Un type d’étendue est une catégorie générique d’étendues, comme tous les domaines de l’entreprise à laquelle appartient l’ordinateur cible, le catalogue global de l’entreprise de l’ordinateur cible ou l’ordinateur cible lui-même. Pour chaque type d’étendue spécifié, la boîte de dialogue utilise le contexte de l’ordinateur cible pour déterminer les entrées de liste d’étendue.

La méthode IDsObjectPicker::Initialize prend un pointeur vers une structure DSOP_INIT_INFO qui contient un tableau de structures DSOP_SCOPE_INIT_INFO . Chaque entrée du tableau DSOP_SCOPE_INIT_INFO spécifie un ou plusieurs types d’étendue, ainsi que des filtres et d’autres attributs applicables. Les filtres déterminent les types d’objets, tels que les utilisateurs, les groupes, les contacts et les ordinateurs, que l’utilisateur peut sélectionner à partir d’un type d’étendue donné. Lorsque l’utilisateur sélectionne une étendue dans la liste, la boîte de dialogue applique les filtres de ce type d’étendue afin d’afficher une liste d’objets à partir desquels l’utilisateur peut sélectionner.

Chaque structure DSOP_SCOPE_INIT_INFO contient une structure DSOP_FILTER_FLAGS qui spécifie les filtres pour ce type d’étendue. La structure DSOP_FILTER_FLAGS fait la distinction entre les étendues de haut niveau et de bas niveau :

  • Une étendue de niveau supérieur est un catalogue global ou un domaine qui prend en charge le fournisseur LDAP ADSI.
  • Une étendue de bas niveau inclut les groupes de travail et tous les ordinateurs individuels. La boîte de dialogue utilise le fournisseur ADSI WinNT pour accéder à une étendue de bas niveau.

Il existe deux ensembles d’indicateurs de filtre définis pour une utilisation dans la structure DSOP_FILTER_FLAGS : l’un pour les étendues de niveau supérieur et l’autre pour les étendues de bas niveau. Le membre Uplevel de la structure DSOP_FILTER_FLAGS est une structure DSOP_UPLEVEL_FILTER_FLAGS qui spécifie les filtres pour les étendues de niveau supérieur. Le membre flDownlevel de la structure DSOP_FILTER_FLAGS est un ensemble d’indicateurs qui spécifient les filtres pour les étendues de bas niveau.