Lorsque vous implémentez des menus en cascade dans des dossiers de fichiers (répertoire) à l'aide des clés de registre SubCommands ou ExtendedSubCommands dans Windows 10, une chose intéressante se produit. Le dernier élément de votre menu en cascade s'exécute lorsque vous cliquez avec le bouton droit sur le raccourci de l'Explorateur de fichiers épinglé dans la barre des tâches et cliquez sur un dossier dans la liste de raccourcis, au lieu d'une fenêtre de dossier ouverte.
( Ce bogue a été signalé pour la première fois sur le forum Microsoft Answers, et vous pouvez y voir ma réponse. Comme il a été signalé plus tard par deux autres utilisateurs, j'ai décidé d'écrire un article de blog à ce sujet. )
Exemple de fichier REG pour reproduire le problème
Copiez le contenu suivant dans le Bloc-notes, enregistrez-le sous "mymenu.reg" et exécutez-le.
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\directory\shell\CustomMenu] "Icon"="shell32.dll, 39" "MUIVerb"="MyMenu" "SubCommands"="" [HKEY_CLASSES_ROOT\directory\shell\CustomMenu\shell\menu1] "Icon"="c:\\windows\\system32\\cmd.exe, 0" @="Command Prompt" [HKEY_CLASSES_ROOT\directory\shell\CustomMenu\shell\menu1\command] @="cmd.exe \"%1\"" [HKEY_CLASSES_ROOT\directory\shell\CustomMenu\shell\menu2] "Icon"="c:\\windows\\system32\\cmd.exe, 0" @="Run Maintenance (Batch File)" [HKEY_CLASSES_ROOT\directory\shell\CustomMenu\shell\menu2\command] @="D:\\Tools\\maintenance.bat"
Le menu en cascade s'affiche et fonctionne parfaitement bien lorsque vous cliquez avec le bouton droit sur un dossier de fichiers.
Bogue: le problème se produit lorsque vous cliquez avec le bouton droit sur l'élément épinglé de l'Explorateur de fichiers dans la barre des tâches et cliquez sur un dossier dans la liste de jumplage. Au lieu d'ouvrir une fenêtre de dossier, la dernière commande de votre menu en cascade (dans cet exemple, «Exécuter la maintenance») est exécutée. Ceci est un bug!
Solution de contournement n ° 1
L'implémentation du menu en cascade sous "Folders" ou "AllFileSystemObjects" clé de Registre ne doit pas provoquer ce problème. Cependant, lorsqu'il est implémenté dans la zone de registre Folders ou AllFileSystemObjects, le menu apparaîtra pour les dossiers virtuels comme Ce PC, la Corbeille, etc. ainsi que pour les Dossiers et fichiers compressés. Pour l'empêcher d'apparaître pour les fichiers, les dossiers virtuels et les dossiers compressés (zippés), ajoutez une vérification en créant la valeur AppliesTo REG_SZ dans votre menu en cascade.
Définissez les données AppliesTo sur:
kind: dossier de fichiers ET System.FileExtension: ". zip"
Paramètres de registre révisés
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Folder\shell\CustomMenu] "Icon"="shell32.dll, 39" "MUIVerb"="MyMenu" "SubCommands"="" "AppliesTo"="kind:file folder AND System.FileExtension:\".zip\"" [HKEY_CLASSES_ROOT\Folder\shell\CustomMenu\shell\menu1] "Icon"="c:\\windows\\system32\\cmd.exe, 0" @="Command Prompt" [HKEY_CLASSES_ROOT\Folder\shell\CustomMenu\shell\menu1\command] @="cmd.exe \"%1\"" [HKEY_CLASSES_ROOT\Folder\shell\CustomMenu\shell\menu2] "Icon"="c:\\windows\\system32\\cmd.exe, 0" @="Run Maintenance (Batch File)" [HKEY_CLASSES_ROOT\Folder\shell\CustomMenu\shell\menu2\command] @="D:\\Tools\\maintenance.bat"
Solution de contournement n ° 2
Dans l'exemple de fichier REG en haut de l'article, incluez une troisième commande de menu qui lance l'explorateur% 1.
[HKEY_CLASSES_ROOT\directory\shell\CustomMenu\shell\menu3\command]
@="explorer.exe \"%1\""
Mais il apparaîtra toujours dans votre menu en cascade. Lorsque vous sélectionnez un dossier dans la Jumplist, cet élément (le dernier dans le menu) est exécuté.