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 des objets utilisateur, contact, groupe et ordinateur. Pour plus d’informations sur les services de domaine Active Directory, consultez Active Directory Domain Services .
Pour afficher une boîte de dialogue sélecteur d’objets :
- Appelez la fonction CoCreateInstance ou CoCreateInstanceEx pour créer une instance de l’interface IDsObjectPicker.
- Appelez la méthode IDsObjectPicker ::Initialize pour initialiser la boîte de dialogue.
- Appelez la méthode IDsObjectPicker ::InvokeDialog pour afficher la boîte de dialogue.
- Appelez la méthode IDataObject ::GetData de l’instance IDataObject retournée par la boîte de dialogue sélecteur d’objets pour récupérer les données CFSTR_DSOP_DS_SELECTION_LIST. Le format de presse-papiers CFSTR_DSOP_DS_SELECTION_LIST 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 sélecteur d’objets.
Si l’identificateur de sécurité (SID) est requis pour un objet, il doit être demandé directement à partir du sélecteur d’objets en ajoutant l’attribut objectSID à la liste des attributs à récupérer pour l’objet sélectionné. Le passage du nom de l’objet retourné à la fonction LsaLookupNames ou LookupAccountName n’est pas recommandé, car la recherche de noms 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, se renommer ou changer en raison de différences de paramètres régionaux. Pour les principaux de sécurité, le objectSID doit être demandé pour l’objet et enregistré en toute sécurité. 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'objectGUID doit être demandé et enregistré.
Initialisation
Lorsque la boîte de dialogue sélecteur d’objets est initialisée, un ensemble de types d’étendues et de filtres est spécifié. Les types d’étendue spécifiés déterminent les emplacements, domaines ou 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 flOptions membre de la structure DSOP_INIT_INFO lorsque la boîte de dialogue initialisée.
Étendues et filtres
La liste déroulante Look in 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 un accès à un ensemble d’objets disponibles. Les entrées de la liste d’étendues dépendent des types d’étendue et de l’ordinateur cible spécifiés lorsque la méthode IDObjectPicker ::Initialize a été appelée pour la dernière fois pour initialiser la boîte de dialogue sélecteur d’objets.
Un type d’étendue est une catégorie générique d’étendues, telle que tous les domaines de l’entreprise auxquels appartient l’ordinateur cible, ou 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’étendues.
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 dans le tableau DSOP_SCOPE_INIT_INFO spécifie un ou plusieurs types d’étendue, ainsi que des filtres applicables et d’autres attributs. 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 pour afficher une liste d’objets à partir duquel 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 des 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 : un pour les étendues de niveau supérieur et un pour les étendues de bas niveau. Le membre niveau supérieur 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 flDownlevel membre de la structure DSOP_FILTER_FLAGS est un ensemble d’indicateurs qui spécifient les filtres pour les étendues de bas niveau.