Propagation de clés par Office2007 de HKLM vers HKCU

Office 2007 apporte une fonctionnalité intéressante de propagation de clés de registre. Le principe est de pouvoir utiliser HKEY_LOCAL_MACHINE pour des clés qui se retrouvent normalement que dans HKEY_CURRENT_USER.

Cette fonctionnalité peut vous être utile, par exemple, dans le cadre d’un déploiement d’un Add-In Office 2007 qui ne peut se faire par définition que pour l’utilisateur courant (c’est à dire dans HKCU). Vous pouvez aussi en avoir besoin dans le cadre d’un paramétrage Office ne s’effectuant que dans la ruche HKCU comme l’affichage du ruban développeur Office.

Voici comment cela fonctionne.

  • A chaque lancement d’applications Office, les clés contenus dans "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\User Settings" sont vérifiées
  • Disons, par exemple, que l’on crée "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\User Settings\MaPropagation" contenant notre logique de propagation. Nous pouvons ensuite créer des sous-clés "Create" qui copieront toutes les clés contenues de cette sous-clé vers HKCU. De la même façon, des sous-clé "Delete" effaceront toutes les clés correspondantes dans l’arborescence HKCU

Pour être concret, prenons l’exemple suivant :

Windows Registry Editor Version 5.00

; Installation ; Utilisation de la fonctionnalité Office 2007 de propagation des clés HKLM vers HKCU ; Exemple pour afficher le ruban developpeur Office

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\User Settings\MaPropagation] "Count"=dword:00000001 ; "MaPropagation" est le code donnée à mon exemple ; "Count" est notre compteur qui sera propagé dans ; "HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\User Settings\MaPropagation"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\User Settings\MaPropagation\Create \Software\Microsoft\Office\12.0\Common\General] "DeveloperTools"=dword:00000001 ; Nous créons le dword "DeveloperTools" avec la valeur 1 dans ; "HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Common\General"

Détaillons :

Nous mettons dans la base de registre le dword "Count" = 1 dans HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\User Settings\MaPropagation. "MaPropagation" est le nom que j’ai choisi pour  cet exemple.image

 

Lorsque qu’Office va se lancer, il effectue un parcours de toutes les clés contenues dans "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\User Settings". Pour chaque clé, il va vérifier si la même clé existe dans "HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\User Settings". Dans notre exemple,

  • Si la clé "MaPropagation" n’existe pas. La clé est créée avec le compteur et la propagation est faite
  • Si la clé "MaPropagation" existe, le compteur est vérifié et la propagation est faite que si la valeur du compteur est différent de celle contenu dans "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\User Settings\MaPropagation".

image

Cette vérification (de la valeur du compteur) permet de ne pas refaire indéfiniment la propagation à chaque lancement d’Office ! Justement, je pense que vous aurez compris que pour refaire un propagation qui modifiera ou supprimera des clés, nous devons modifier le compteur de "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\User Settings\MaPropagation"

 

Au final, en quoi consiste cette fameuse propagation ? Très simplement :

  • Les clés contenues dans "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\User Settings\MaPropagation\Create" sont ajoutées/modifiées de "HKEY_CURRENT_USER"
  • Les clés contenues dans "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\User Settings\MaPropagation\Delete" sont supprimées de "HKEY_CURRENT_USER"

Dans notre exemple, nous créons le dword "DeveloperTools" dans "HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Common\General".

Sans titre

image

 

Pour résumé, avant tout lancement d’Office, seules les clés HKLM sont présentes. Lorsque un utilisateur lance Office, le mécanisme de propagation opère. C’est donc comme ceci que l’on peut déployer un Add-In VSTO 3 pour tous les utilisateurs Office 2007 (même ceux qui n’ont pas encore de profil dans la base de registre)

A titre d’exemple, voici les .REG qui permettent d’afficher/masquer le ruban développeur Office 2007
SB-Installation-AjoutDeveloperToolsDansOffice2007PourTousLesUtilisateurs.reg 

Bye,

Sebastien.