Gestionnaires de notifications administratives
Le composant logiciel enfichable MMC Microsoft Utilisateurs et ordinateurs Active Directory fournit un mécanisme permettant aux composants de recevoir des notifications lorsque l’utilisateur supprime, renomme, déplace ou modifie les propriétés d’un objet à l’aide du composant logiciel enfichable. Le composant qui reçoit les notifications est appelé « gestionnaire de notifications ».
Cela est utile lorsque plusieurs objets sont liés entre eux et doivent exister dans le même conteneur. Si l’un des objets liés est déplacé, une notification est fournie au gestionnaire de notifications et le gestionnaire de notifications peut déplacer les autres objets liés vers le même dossier.
Lorsqu’une des opérations est effectuée et qu’un ou plusieurs gestionnaires de notification sont installés, le composant logiciel enfichable Utilisateurs et ordinateurs affiche une boîte de dialogue de confirmation qui répertorie les gestionnaires de notification et une zone de case activée pour chaque gestionnaire. Si la zone case activée d’un gestionnaire est sélectionnée, le gestionnaire est averti. Si la zone case activée n’est pas sélectionnée, le gestionnaire n’est pas averti.
Implémentation d’un gestionnaire de notifications
Un gestionnaire de notifications est un objet COM implémenté en tant que serveur in-proc. Le gestionnaire de notifications doit implémenter l’interface IDsAdminNotifyHandler .
Lorsqu’un événement se produit à l’origine d’une notification, le composant logiciel enfichable Utilisateurs et ordinateurs énumère les gestionnaires de notification inscrits et en crée chacun à l’aide du CLSID pour le gestionnaire. Une fois le gestionnaire créé, le composant logiciel enfichable appelle la méthode IDsAdminNotifyHandler::Initialize . La méthode Initialize fournit au composant logiciel enfichable les événements que le gestionnaire doit recevoir.
Si l’événement doit être envoyé au gestionnaire de notifications, le composant logiciel enfichable appelle la méthode IDsAdminNotifyHandler::Begin . La méthode Begin fournit au gestionnaire l’événement qui se produit, des données sur l’objet sur lequel l’événement se produit et, selon l’événement, des données sur ce que l’objet deviendra. La méthode Begin fournit également le composant logiciel enfichable avec le texte qui doit être affiché pour le gestionnaire dans la boîte de dialogue de confirmation.
Lorsque la méthode Begin de chaque gestionnaire a été appelée, le composant logiciel enfichable affiche la boîte de dialogue de confirmation. La boîte de dialogue de confirmation invite l’utilisateur à sélectionner les gestionnaires qui recevront la notification. Si l’utilisateur appuie sur le bouton d’appui Pas dans la boîte de dialogue de confirmation, aucun des gestionnaires n’est averti. Si l’utilisateur appuie sur le bouton Push Oui , chacun des gestionnaires sélectionnés dans la boîte de dialogue de confirmation reçoit la notification. Le composant logiciel enfichable envoie la notification au gestionnaire en appelant la méthode IDsAdminNotifyHandler::Notify .
Une fois tous les gestionnaires avertis, le composant logiciel enfichable appelle la méthode IDsAdminNotifyHandler::End . La méthode End est toujours appelée, même si la méthode Notify n’est pas appelée.
Inscription d’un gestionnaire de notifications dans le Registre Windows
Comme tous les serveurs COM, un gestionnaire de notifications doit être inscrit dans le Registre Windows. Le gestionnaire est inscrit 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 threading est spécifié dans la valeur ThreadingModel . Tous les gestionnaires de notifications doivent utiliser le modèle de thread d’appartement .
Inscription d’un gestionnaire de notifications auprès d’un serveur Active Directory
Dans services de domaine Active Directory, l’inscription du gestionnaire de notifications est spécifique à un paramètre régional. Si le gestionnaire de notifications s’applique à tous les paramètres régionaux, il doit être inscrit dans l’objet displaySpecifier dans tous les sous-conteneurs de paramètres régionaux du conteneur DisplaySpecifiers. Si le gestionnaire de notifications est localisé pour certains paramètres régionaux, il est inscrit dans l’objet displaySpecifier dans le sous-conteneur de ces paramètres régionaux. Pour plus d’informations sur le conteneur DisplaySpecifiers et les paramètres régionaux, consultez Display Specifiers and DisplaySpecifiers Container.
Les gestionnaires de notifications sont inscrits sous l’attribut dsUIAdminNotification dans le conteneur DS-UI-Default-Settings . Il s’agit d’une valeur de chaîne Unicode à valeurs multiples où chaque valeur nécessite le format suivant :
<order number>,<CLSID>
Le «< numéro> de commande » est un nombre non signé qui représente la position du gestionnaire dans la boîte de dialogue de confirmation. Lorsque la boîte de dialogue de confirmation 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 gestionnaires s’affichent dans l’ordre dans lequel ils sont lus à partir du serveur Active Directory. Un « numéro> de commande » non existant, c’est-à-dire qui n’est pas utilisé par les autres valeurs de la propriété,< doit être utilisé si possible. Il n’y a pas de position de départ prescrite et des interstices peuvent apparaître dans la séquence «< numéro> de commande ».
Le «< CLSID> » est la représentation sous forme de chaîne du CLSID tel que produit par la fonction StringFromCLSID .