Это может быть сложно, потому что есть несколько мест и методов для добавления пункта контекстного меню.
HKEY_CLASSES_ROOT
в Реестре содержатся, помимо прочего, пункты контекстного меню и регистрации расширений оболочки. Некоторые подключи этого улья представляют виды объектов, которые вы видите в Проводнике. Возможно, вам придется поискать, где именно зарегистрирован ваш пункт меню. Особенно интересные ключи:
*
относится ко всем файламDirectory
применяется ко всем каталогам при щелчке правой кнопкой мыши на элементе папкиBackground
ПодразделDirectory
применяется ко всем каталогам, когда правая кнопка мыши на фоне текущей папкиexefile
относится к приложениям (файлы EXE)
Некоторые из этих подразделов имеют shell
подраздел, который содержит подразделы для специфических для оболочки регистраций. Регистрации с command
подключом представляют пункты контекстного меню. Например, в моей системе файлы AC3 имеют пункт контекстного меню «Воспроизвести с VLC media player», который идет из этой ветви:
HKEY_CLASSES_ROOT Subkey: ac3file Subkey: shell Subkey: PlayWithVLC Default value: Play with VLC media player Subkey: command Default value: "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" --started-from-file --no-playlist-enqueue "%1"
Значением по умолчанию для command
подраздела является командная строка, вызываемая при щелчке элемента. %1
заменяется файлом / каталогом, в котором был использован элемент. Соответствующая статья HowToGeek.
К сожалению, у некоторых нет командной строки, и вместо этого они запускаются через COM-объекты. Некоторые элементы контекстного меню вообще не имеют отдельных записей реестра, а вместо этого динамически добавляются расширениями оболочки. Соответствующие расширения оболочки находятся под shellex\ContextMenuHandlers
веткой ключа типа файла вместо shell
. Если при щелчке по таким элементам появляется новый процесс, вы можете использовать Process Explorer, чтобы увидеть используемую командную строку - просто наведите курсор мыши на процесс. В противном случае может оказаться невозможным эмулировать пункт меню с помощью командной строки.