сценарий

Я использую 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"=""

С другой стороны, уловка работает хорошо для оригинальных элементов, которые хранятся в разделах реестра, упомянутых выше, но этот прием не работает для этого "призрачного" или "фиктивного" элемента, от которого я хочу скрыть контекстное меню.

0