Inscription de l’objet COM du menu contextuel dans un spécificateur d’affichage

Lorsque vous utilisez COM pour créer une DLL d’extension de menu contextuel pour un service d’annuaire Active Directory, l’extension doit être inscrite auprès du Registre Windows et services de domaine Active Directory pour notifier les composants logiciels enfichables MMC d’administration Active Directory et l’interpréteur de commandes Windows de l’extension.

Inscription dans le Registre Windows

Comme tous les serveurs COM, une extension de menu contextuel doit être inscrite dans le Registre. L’extension est inscrite sous la clé suivante.

HKEY_CLASSES_ROOT
   CLSID
      <clsid>

<clsid> est la représentation sous forme de chaîne du CLSID tel que produit par la fonction StringFromCLSID . Sous la <clé clsid> , il existe une clé InProcServer32 qui identifie l’objet en tant que serveur in-proc 32 bits. Sous la clé InProcServer32 , l’emplacement de la DLL est spécifié dans la valeur par défaut et le modèle de thread est spécifié dans la valeur ThreadingModel . Toute extension de menu contextuel doit utiliser le modèle de thread « Apartment ».

Inscription auprès de services de domaine Active Directory

L’inscription de l’extension de menu contextuel est spécifique à un paramètre régional. Si l’extension de menu contextuel s’applique à tous les paramètres régionaux, elle doit être inscrite dans l’objet displaySpecifier de la classe d’objet dans tous les sous-conteneurs de paramètres régionaux du conteneur Display Specifiers. Si l’extension de menu contextuel est localisée pour certains paramètres régionaux, elle doit être inscrite dans l’objet displaySpecifier dans le sous-conteneur de ces paramètres régionaux. Pour plus d’informations sur le conteneur de spécificateurs d’affichage et les paramètres régionaux, consultez Display Specifiers and DisplaySpecifiers Container.

Un élément d’extension de menu contextuel peut être inscrit sous deux attributs de spécificateur d’affichage. Il s’agit de adminContextMenu et shellContextMenu.

L’attribut adminContextMenu identifie les menus contextuels d’administration à afficher dans les composants logiciels enfichables d’administration Active Directory. Le menu contextuel s’affiche lorsque l’utilisateur affiche le menu contextuel pour les objets de la classe appropriée dans l’un des composants logiciels enfichables MMC d’administration Active Directory.

L’attribut shellContextMenu identifie les menus contextuels de l’utilisateur final à afficher dans l’interpréteur de commandes Windows. Le menu contextuel s’affiche lorsque l’utilisateur affiche le menu contextuel des objets de la classe appropriée dans le Explorer Windows. À compter de Windows Server 2003, l’interpréteur de commandes Windows n’affiche plus les objets de services de domaine Active Directory.

Tous ces attributs sont à valeurs multiples.

Lors de l’inscription d’une extension de menu contextuel, les valeurs des attributs adminContextMenu et shellContextMenu nécessitent le format suivant.

<order number>,<clsid>

Le «< numéro> de commande » est un numéro non signé qui représente la position de l’élément dans le menu contextuel. Lorsqu’un menu contextuel s’affiche, les valeurs sont triées à l’aide d’une comparaison du «< numéro> de commande » de chaque valeur. Si plusieurs valeurs ont le même «< numéro> de commande », ces extensions de menu contextuel sont chargées dans l’ordre dans lequel elles sont lues à partir du serveur Active Directory. Si possible, utilisez un «< numéro> de commande » non existant, c’est-à-dire qui n’a pas été utilisé par d’autres valeurs de la propriété . Il n’y a pas de position de départ prescrite et les écarts sont autorisés dans la séquence de «< numéro> d’ordre ».

Le «< clsid> » est la représentation sous forme de chaîne du CLSID tel qu’il est produit par la fonction StringFromCLSID .

Dans l’interpréteur de commandes Windows, les éléments de menu contextuel à sélection multiple sont pris en charge. Dans ce cas, l’extension de menu contextuel est appelée pour chaque objet sélectionné. Dans les composants logiciels enfichables d’administration Active Directory, les éléments d’extension de menu contextuel à sélection multiple sont également pris en charge. Dans ce cas, la structure DSOBJECTNAMES contient une structure DSOBJECT pour chaque objet de répertoire sélectionné.

Important

Pour l’interpréteur de commandes Windows, les informations d’affichage du spécificateur sont récupérées lors de l’ouverture de session de l’utilisateur et mises en cache pour la session de l’utilisateur. Pour les composants logiciels enfichables d’administration, les données du spécificateur d’affichage sont récupérées lors du chargement du composant logiciel enfichable et mises en cache pendant la durée du processus. Pour l’interpréteur de commandes Windows, cela signifie que les modifications apportées à l’affichage des spécificateurs prennent effet une fois qu’un utilisateur se déconnecte et se reconnecte. Pour les composants logiciels enfichables d’administration, les modifications prennent effet lorsque le composant logiciel enfichable ou le fichier de console est rechargé, c’est-à-dire si vous démarrez une nouvelle instance du fichier de console ou de nouvelles Mmc.exe instance et ajoutez le composant logiciel enfichable, les données du spécificateur d’affichage les plus récentes sont récupérées.

 

Pour plus d’informations et un exemple de code montrant comment implémenter une extension de menu contextuel, consultez Exemple de code pour l’implémentation de l’objet COM du menu contextuel.