Каскадных меню и файловых переходов в Windows 10

Когда вы реализуете каскадные меню в папках файлов (каталог) с помощью разделов реестра SubCommands или ExtendedSubCommands в Windows 10, происходит интересная вещь. Последний пункт в вашем каскадном меню запускается, когда вы щелкаете правой кнопкой мыши ярлык Pinned File Explorer на панели задач и щелкаете папку в списке переходов вместо открытия окна папки.

( Впервые об этой ошибке было сообщено на форуме Microsoft Answers, и вы можете увидеть мой ответ там. Как позже сообщили два других пользователя, я решил написать в блоге об этом. )

Пример файла REG для воспроизведения проблемы

Скопируйте следующее содержимое в Блокнот, сохраните как «mymenu.reg» и запустите его.

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"

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"

Каскадное меню будет отображаться и работать отлично, когда вы щелкнете правой кнопкой мыши по папке с файлом.

Ошибка: проблема возникает, когда вы щелкаете правой кнопкой мыши на закрепленном элементе Проводника на панели задач и выбираете папку в списке переходов. Вместо открытия окна папки выполняется последняя команда в вашем каскадном меню (в данном примере «Запустить обслуживание»). Это ошибка!

Обходной путь № 1

Реализация каскадного меню в разделе реестра «Папки» или «AllFileSystemObjects» не должна вызывать эту проблему. Однако при реализации в области реестра «Папки» или «AllFileSystemObjects» меню будет отображаться для виртуальных папок, таких как «Этот компьютер», «Корзина» и т. Д., А также для сжатых папок и файлов. Чтобы он не отображался для файлов, виртуальных папок и сжатых (заархивированных) папок, добавьте проверку, создав значение AppliesTo REG_SZ в вашем каскадном меню.

Установите значение AppliesTo для значения:

 вид: папка с файлами И System.FileExtension: ". zip" 

Пересмотренные настройки реестра

 Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT \ Folder \ shell \ CustomMenu] "Icon" = "shell32.dll, 39" "MUIVerb" = "MyMenu" "SubCommands" = "" "AppliesTo" = "kind: папка файлов И System.FileExtension: \". zip \ "" [HKEY_CLASSES_ROOT \ Folder \ shell \ CustomMenu \ shell \ menu1] "Icon" = "c: \\ windows \\ system32 \\ cmd.exe, 0" @ = "Командная строка" [HKEY_CLASSES_ROOT \ Folder \ shell \ CustomMenu \ shell \ menu1 \ command] @ = "cmd.exe \"% 1 \ "" [HKEY_CLASSES_ROOT \ Папка \ shell \ CustomMenu \ shell \ menu2] "Icon" = "c: \\ windows \\ system32 \\ cmd.exe, 0 "@ =" Запуск обслуживания (пакетный файл) "[HKEY_CLASSES_ROOT \ Папка \ shell \ CustomMenu \ shell \ menu2 \ command] @ =" D: \\ Tools \\ maintenance.bat "

Обходной путь № 2

В примере файла REG в верхней части статьи включите третью команду меню, которая запускает проводник% 1.

 [HKEY_CLASSES_ROOT\directory\shell\CustomMenu\shell\menu3\command]

@ = "explorer.exe \"% 1 \ ""

Но он всегда будет отображаться в вашем каскадном меню. Когда вы выбираете папку в списке переходов, этот пункт (последний в меню) выполняется.

ПОХОЖИЕ СТАТЬИ