I am trying to add a context menu item to a DLL file. The reason is that I have written an application which retracts and deployed a managed DLL file to the GAC. The application is all good, but now I want the ability to right-click a DLL and just click "copy to GAC".
I've tried to follow instructions as per this question: How add context menu item to Windows Explorer for folders but to no avail. When I right click a DLL, nothing new is appearing.
I've also tried the following: https://winaero.com/blog/add-register-dll-context-menu-commands-for-dll-files-in-windows-10/#comment-22928 - ran the reg file but no result as well.
Maybe there's a hardcoded restriction on DLL files for such actions?
Here's my current registry setup:
Any guidance would be appreciated.
-
Read Microsoft's documentation, this is all explained: Creating Shortcut Menu HandlersRemy Lebeau– Remy Lebeau2022年06月23日 22:55:33 +00:00Commented Jun 23, 2022 at 22:55
2 Answers 2
This is based on andromeda947's answer here:
If you have admin rights you can use HKEY_CLASSES_ROOT\SystemFileAssociations\.yourextension, which is simpler as it doesn't require an intermediate ProgID.
Option 1: edit the registry manually
- add a new key at
HKEY_CLASSES_ROOT\SystemFileAssociations\.yourextension\shell\your menu entry text\commandcreating any keys you need to in that path (if there's not one for.yourextensionadd it; if there's not one forshelladd it; etc) - set the default value for
command(the last key you created) toC:\path\to\yourapp.exe "%1"
Option 2: I made a tool to do this
you can download it here. This is an example of how to register notepad.exe as a context menu item for dll files.
regwincontext.exe dll "notepad it" C:\Windows\notepad.exe
2 Comments
The general steps to achieve this are as follows:
- Fire up
regedit - Identify the ProgID for your extension - go to
HKCR\.yourextensionand take note of the default value (in your case,dllfile) - Navigate to
HKCU\Software\Classes(for user) orHKLM\Software\Classes(for all users) - Look for a matching key (in your case
dllfile) - if it's not there, create it - Ensure it has a sub-key called
shell - Add a sub-key to
shellnamed as the command you want (refer to image below) - Add a sub-key to your new key called
command - Modify the
(Default)value to be the command you want to execute.%1will give you the path of the file in context (remember to wrap it in"due to potential white-space in the path)
You seem to have done all the above, so you may be doing something wrong, as this is my result after a quick sanity test:
So, here are a few things I can think of that would make it behave non-intuitively:
- You're adding this to
HKLMrather thanHKCU- due to how inheritance works, I do believe adding it toHKLMwould require a restart, or at best, a shell restart - You've added this to
HKCUbut your dll requires elevated permissions to access - You have some silly syntax error somewhere ;)
The sample command I used to test this was a good old boring "C:\Windows\notepad.exe" "%1"
Comments
Explore related questions
See similar questions with these tags.