Добавить пункт контекстного меню Windows Shell для определенного расширения (не тип файла)

Чтобы добавить контекстное меню оболочки Windows, скажем, для .txt файлы - если .txt расширение в HKEY_CLASSES_ROOT (или в HKEY_CURRENT_USER\Software\Classes, не имеет значения) имеет значение по умолчанию (тип файла) txtfile - вы добавляете команду в HKEY_CLASSES_ROOT\txtfile\shell\yourcommand (и сама команда в HKEY_CLASSES_ROOT\txtfile\shell\yourcommand\command, конечно) и поехали.

Тем не менее, скажем, .txt вместо этогорасширение имеет значение по умолчанию Notepad++_file, Notepad++_file может быть тип файла для многих других расширений, поэтому, если вы добавите команду в HKEY_CLASSES_ROOT\Notepad++_file, то эта команда появится для каждого расширения, связанного с Notepad++.

Итак, вопрос: как вы можете добавить пункт меню для ТОЛЬКО ОДНОГО конкретного ПРОДЛЕНИЯ, не меняя его тип файла, если это вообще возможно?

PS: я не хочу просто дублировать тип файла, потому что будущие изменения в исходном типе файла не будут влиять на дублированный.

1 ответ

Ну вот:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\your custom app]
@="Open with your custom app"
"icon"="C:\\Windows\\notepad.exe,0"
"AppliesTo"=".nfo"

[HKEY_CLASSES_ROOT\*\shell\your custom app\command]
@="C:\\Windows\\notepad.exe \"%1\""

Линия "AppliesTo"=".nfo" делает трюк.

Отлично работает на Windows 10.

Он работает для каждого расширения файла, независимо от того, есть приложение, связанное с этим расширением, или нет. Делая это, он менее инвазивен и оставляет очень маленький след в реестре.

Сравните, чтобы добавить пункт меню в контекстное меню Windows только для определенного типа файла


Редактировать:

Если вы хотите применить эту команду к нескольким расширениям, используйте:

"AppliesTo"="System.FileName:\"*.nfo\" OR System.FileName:\"*.log\""

Кредит: https://superuser.com/questions/183785/windows-7-context-menu-for-folders-if-folder-contains-certain-filetypes

Другие вопросы по тегам