Добавить пункт контекстного меню 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\""