Когда вы реализуете каскадные меню в папках файлов (каталог) с помощью разделов реестра SubCommands или ExtendedSubCommands в Windows 10, происходит интересная вещь. Последний пункт в вашем каскадном меню запускается, когда вы щелкаете правой кнопкой мыши ярлык Pinned File Explorer на панели задач и выбираете папку в списке переходов вместо открытия окна папки.
(Впервые об этой ошибке было сообщено на форуме Microsoft Questions, и вы можете увидеть мой ответ там. Как позже сообщили два других пользователя, я решил написать в блоге об этом.)
Пример файла 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"
Каскадное меню будет отображаться и прекрасно работать, если щелкнуть правой кнопкой мыши папку с файлом.
Ошибка: проблема возникает, когда вы щелкаете правой кнопкой мыши на закрепленном элементе Проводника на панели задач и выбираете папку в списке переходов. Вместо открытия окна папки выполняется последняя команда в вашем каскадном меню (в данном примере «Запустить обслуживание»). Это ошибка!
Обходной путь № 1
Реализация каскадного меню в разделе реестра «Папки» или «AllFileSystemObjects» не должна вызывать эту проблему. Однако при реализации в области реестра «Папки» или «AllFileSystemObjects» меню будет отображаться для виртуальных папок, таких как «Этот компьютер», «Корзина» и т. Д., А также для сжатых папок и файлов. Чтобы он не отображался для файлов, виртуальных папок и сжатых (заархивированных) папок, добавьте проверку, создав значение AppliesTo REG_SZ в вашем каскадном меню.
Установите значение AppliesTo для значения:
kind:file folder AND System.FileExtension:".zip"
Пересмотренные настройки реестра
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"
Обходной путь № 2
В примере файла REG в верхней части статьи включите третью команду меню, которая запускает Проводник% 1.
[HKEY_CLASSES_ROOT\directory\shell\CustomMenu\shell\menu3\command]
@="explorer.exe \"%1\""
Но он всегда будет отображаться в вашем каскадном меню. Когда вы выбираете папку в Jumplist, этот пункт (последний в меню) выполняется.