Задать вопрос
@AndrewSHkod

Как добавить опцию в контекстное меню для Internet Shortcuts?

При добавлении опции в контекстное меню для иконок разных типов этот код работает нормально:

with reg.CreateKey(reg.HKEY_CURRENT_USER, base_path) as main_key:
    reg.SetValueEx(main_key, 'MUIVerb', 0, reg.REG_SZ, 'New Item')
    with reg.CreateKey(main_key, 'command') as cmd_key:
        reg.SetValue(cmd_key, '', reg.REG_SZ, r'"C:\...\app.exe" "%1"')

Для файлов типа .txt, .png и т.д. я использовал base_path = "SOFTWARE\\Classes\\*\\shell\\NewItem"
Для папок — base_path = "SOFTWARE\\Classes\\Directory\\shell\\NewItem"
Для .lnk файлов — base_path = "SOFTWARE\\Classes\\lnkfile\\shell\\NewItem"
Вопрос: Какой base_path нужно использовать для Internet Shortcut (URL-ярлыков)?
Я пробовал:
base_path = "SOFTWARE\\Classes\\InternetShortcut\\shell" — не сработало (опция не добавилась) .
Вариант с .url (например, SOFTWARE\\Classes\\.url\\shell\\NewItem) — тоже не помогло.
  • Вопрос задан
  • 80 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@robothot
.url-файлы обрабатываются через тип InternetShortcut, но Shell не использует ветку InternetShortcut\shell, а вместо этого — ветку ShellEx\ContextMenuHandlers, в отличие от файлов .txt, .png и т.п.

Поэтому добавление через shell\NewItem не сработает для .url ярлыков.

Используй:

import winreg as reg

base_path = r"SOFTWARE\Classes\SystemFileAssociations\.url\shell\NewItem"

with reg.CreateKey(reg.HKEY_CURRENT_USER, base_path) as main_key:
    reg.SetValueEx(main_key, 'MUIVerb', 0, reg.REG_SZ, 'New Item for .url')
    with reg.CreateKey(main_key, 'command') as cmd_key:
        reg.SetValue(cmd_key, '', reg.REG_SZ, r'"C:\Path\To\app.exe" "%1"')
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы