27 janvier 2020

Ajouter une liste de répertoires au menu contextuel de Windows

Dans le cadre de mon activité informatique, j’utilise quotidiennement un bon nombre de petits logiciels portables, qui sont soigneusement rangés, chacun dans un répertoire. Arrivant à environ 200 logiciels, je les ai rangés par sous-catégories, pour les retrouver rapidement. Chacun son système je suppose, moi j’ai voulu les ranger alphabétiquement. Pour parcourir plus rapidement cette liste, on peut créer un simple raccourci, moi j’ai voulu les mettre dans le menu contextuel. Vu que j’ai un peu galéré, voici comment je m’y suis pris.


Tout d’abord, voici à quoi cela doit ressembler.

Un menu cascadant, puis la liste des répertoires elle-même.

Tout se passe en base de registre. La ruse ici est qu’il faut modifier des clés à deux endroits.

Tout d’abord, lancez Regedit.

Partie 1 – Le répertoire de base

Créez le répertoire principal en allant chercher cette clé.

HKEY_CURRENT_USER\SOFTWARE\Classes\DesktopBackground\Shell

Créez une clé avec le nom que vous voulez.

Créer les valeurs de clé REG_SZ suivantes :

  1. icon : Non obligatoire, permet de mettre une icone personalisée.
  2. MUIVerb : Non obligatoire, permet de mettre un nom différent du nom de la clé elle-même. Par exemple, j’aurais pu mettre « Soft » comme nom de clé, et changer en « Logiciel » grâce à MUIVerb.
  3. Position : prend les valeur « Top », « Middle » et « Bottom ». Elle indique où doit se trouver le menu.
  4. SubCommands : c’est le plus important. Indique les dossiers ou autres objets qui doivent apparaître.

« SubCommands » doit comporter la liste des autres commandes, séparées par un point-virgule. Comme pour le menu principal, il sera possible de changer le nom qui apparait.

Comme dans la base de registre, la liste des sous-commandes va se mélanger avec celles par défaut de windows dans un joyeux bordel, j’ai préfixé chaque commande par le nom du répertoire principal.

Logiciels.A-H;Logiciels.I-P;Logiciels.Q-Z;Logiciels.Autres

Partie 2 – Les sous-commandes

Ca se passe ici :

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell

Créez une clé pour chaque sous-répertoire.

Pour chaque clé, créez un REG_SZ MUIVerb pour changer le nom pour quelque chose de plus lisible. Vous pouvez aussi ajouter un Icon comme vu plus haut.

Enfin, créez une clé « command ». Écrit exactement comme ça.

Dans « command », changez l’action par défaut.

Et voilà.

En vrai, c’est pas hyper compliqué une fois qu’on a compris.

Voilà quand même un petit texte qui contient mes modifs. Vous le copiez dans un fichier texte que vous renommez en .reg à la fin, vous le modifiez à votre convenance, et vous double-cliquez dessus pour tout créer d’un coup.

Windows Registry Editor Version 5.00 
[HKEY_CURRENT_USER\Software\Classes\DesktopBackground\Shell\Logiciels]

"Position"="Middle"
"SubCommands"="Logiciels.A-H;Logiciels.I-P;Logiciels.Q-Z;Logiciels.Autres"
"MUIVerb"="Logiciels"
"icon"="explorer.exe"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Logiciels.A-H]
"MUIVerb"="A-H"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Logiciels.A-H\command]
@="explorer E:\Logiciels\A-H"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Logiciels.I-P]
"MUIVerb"="I-P" 

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Logiciels.I-P\command]
@="explorer E:\Logiciels\I-P" 

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Logiciels.Q-Z]
"MUIVerb"="Q-Z" 

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Logiciels.Q-Z\command]
@="explorer E:\Logiciels\Q-Z" 

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Logiciels.Autres]
"MUIVerb"="Autres" 

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Logiciels.Autres\command]
@="explorer E:\Logiciels\zz - Autre"