сценарий
Я использую Windows 10, но у меня такая же проблема в других версиях Windows.
Я добавил пользовательский элемент в свое контекстное меню Windows, доступ к которому предполагается получить, щелкнув правой кнопкой мыши по папке каталога или из фона каталога.
Этот скрипт реестра воспроизводит мой пользовательский элемент контекстного меню (кроме подкоманд):
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\shell\PATHS]
"MUIVerb"="PATHS"
"SubCommands"="PATHS.AddDirBackground;PATHS.RemoveDirBackground"
"Icon"="C:\\Program Files\\PATHS\\PATHS.Title.ico"
"Position"="bottom"
[HKEY_CLASSES_ROOT\Directory\Background\shell\PATHS]
"MUIVerb"="PATHS"
"SubCommands"="PATHS.AddDirBackground;PATHS.RemoveDirBackground"
"Icon"="C:\\Program Files\\PATHS\\PATHS.Title.ico"
"Position"="bottom"
проблема
У меня проблема в том, что Windows, кажется, обрабатывает фон рабочего стола так же, как фон каталога, поэтому мой элемент контекстного меню виден, когда я щелкаю правой кнопкой мыши фон рабочего стола:
Мне не нравится это поведение, потому что этот элемент контекстного меню бесполезен, когда доступен из фона рабочего стола, он только увеличивает размер контекстного меню рабочего стола в целом.
Вопрос
Как я могу отключить отображение моего элемента contextmenu в contextmenu фона рабочего стола?
Обратите внимание, что это простой элемент контекстного меню, добавляемый вручную через реестр, я не претендую на то, чтобы переработать реализацию через расширение оболочки.
Исследование
В этой статье я видел естественную методологию или хакерство, чтобы скрыть или отключить любой элемент контекстного меню:
Однако я не уверен, как это сделать, если это действительно то, что мне нужно.
Я попытался добавить "призрачный" элемент в раздел реестра DesktopBackground, пытаясь переопределить исходный элемент, который у меня есть, в ключе Directory\Background , но элемент все еще отображается, когда я щелкаю правой кнопкой мыши фон рабочего стола:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\DesktopBackground\shell\PATHS]
"MUIVerb"="PATHS"
"LegacyDisable"=""
Или же:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\DesktopBackground\shell\PATHS]
"MUIVerb"="PATHS"
"Extended"=""
С другой стороны, уловка работает хорошо для оригинальных элементов, которые хранятся в разделах реестра, упомянутых выше, но этот прием не работает для этого "призрачного" или "фиктивного" элемента, от которого я хочу скрыть контекстное меню.