Reputation: 847
To add a Windows shell context menu, let's say for .txt
files - if the .txt
extension in HKEY_CLASSES_ROOT
(or in HKEY_CURRENT_USER\Software\Classes
, doesn't really matter) has the default value (file type) txtfile
- you add the command to HKEY_CLASSES_ROOT\txtfile\shell\yourcommand
(and the command itself in HKEY_CLASSES_ROOT\txtfile\shell\yourcommand\command
, of course) and there you go.
However, let's say the .txt
extension instead has the default value Notepad++_file
. Notepad++_file
might be the file type for many other extensions, so if you add the command to HKEY_CLASSES_ROOT\Notepad++_file
, then this command will appear for every extension associated with Notepad++.
So, the question is: how can you add a menu entry for ONLY ONE specific EXTENSION, without changing its file type, if possible at all?
P.S.: I don't want to just duplicate the file type, because future changes to the original file type won't affect the duplicated one.
Upvotes: 12
Views: 6661
Reputation: 2189
Here you go:
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\""
The line "AppliesTo"=".nfo"
does the trick.
Works perfectly on Windows 10.
It works per file extension, regardless if there is an application associated with that extension or not. Doing this way it less invasive and leaves a very small footprint in the registry.
Compare to Add menu item to windows context menu only for specific filetype
Edit:
If you want to apply that command to more than one extension use:
"AppliesTo"="System.FileName:\"*.nfo\" OR System.FileName:\"*.log\""
Upvotes: 29