3

Например, Comodo Internet Security добавил два элемента в мое меню, вызываемое правой кнопкой мыши, "Сканировать с помощью Comodo" и "Запустить в контейнере Comodo". Я не особо хочу, чтобы они оба засоряли мое контекстное меню; Я никогда не собираюсь использовать сканирование (я предпочитаю Kaspersky для проверки файлов), и я редко собираюсь использовать виртуальный рабочий стол. Что я хотел бы сделать, так это отключить их через реестр (что я знаю, как это сделать), НО затем добавить пункт "Запуск в Comodo Container" в моем меню отправки. Я уже знаю, как добавить такие элементы, создав ярлык, содержащий аргументы командной строки в shell:sendto. Однако я не могу понять, какими должны быть эти аргументы, чтобы он выполнял ту же функцию, что и исходный пункт контекстного меню Comodo.

Кто-нибудь знает, есть ли простой способ выяснить cmd-эквивалент элемента контекстного меню, созданного приложением? Я хотел бы иметь возможность сделать это для нескольких различных приложений, а не только для Comodo. Я не знаю, есть ли универсальный способ по существу перевести реестр mumbo-jumbo в понятный код cmd, но Google ничего не нашел. Кто-нибудь знает, возможно ли это?

1 ответ1

2

Это может быть сложно, потому что есть несколько мест и методов для добавления пункта контекстного меню.

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, чтобы увидеть используемую командную строку - просто наведите курсор мыши на процесс. В противном случае может оказаться невозможным эмулировать пункт меню с помощью командной строки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .