Unhide Windows 7 context menu extras permanently

In Windows 7, when you hold down Shift when right-clicking in Windows Explorer, extra items such as "Copy as path", "Open command window here", or more "Send to" options, are added to the context menu, depending on the item you clicked on.

Is there any way to have those extras permanently, without having to hold down Shift?

I hope it can be done without installing extra shell extensions (see below) – more thinking about a registry hack or something…

Update:

Solved for "Open command window here", not yet for "Copy as path"!


On my XP system, I used to install SmartStartMenu only for the shell extension that comes with it, giving the ever useful 'Copy pathname', 'Copy short pathname', 'Run with command line arguments' and 'Open in DOS box' menu items, without needing to hold down Shift or any other "modifier key".


Solution 1:

This seems to be what you're looking for: http://www.techspot.com/guides/210-edit-windows-extended-context-menu/

This involves using a small software utility 'ShellMenuView' which doesn't require installation and is compatible with 'everything from Windows 98 to Windows 7 x64'. You can download the utility here (32-bit | 64-bit).

Solution 2:

I never tried to completely disable the shift menu but I wouldn't recommend it as it's actually a very useful tool for de-cluttering the main context menu if you know how to control what goes into main vs unshifted. That is quite an easy thing to do but here are some basics first:

All your context menu items that deal individual files or up to 15 files selected can be found here:

HKEY_CLASSES_ROOT\*\shell

folder related actions are broken up into 2 categories: actions available when you right click background and actions when you right click a folder. And they can be found here:

HKEY_CLASSES_ROOT\Directory\Background\shell
HKEY_CLASSES_ROOT\Directory\shell

Drives have their own keys here:

HKEY_CLASSES_ROOT\Drive\shell

The structure of context menu commands will be as follows

HKEY_CLASSES_ROOT\(*,Directory or Drive)\shell\(Command's Main Key)
HKEY_CLASSES_ROOT\(*,Directory or Drive)\shell\(Command's Main Key)\command <=this will store the executed command when when the context menu item related to this key is selected 

The Command entry in the context menu will have the same name as the main key unless you specify differently by creating a String Value called MUIverb under the main key. Eg. You can make a String Value called MUIverb and set it value as New Name ("MUIverb"="New Name").

A command that will be located in the extended shift when it has a String Value called Extended under the main key. You want it to be in the main shell context menu, delete the "Extended" String Value entry. You want to transfer something to the extended menu, just put "Extended" in it's main key. You can also specify an icon for the menu entry by putting another String Value in the same key. Eg: "Icon"="C:\Windows\system32\SHELL32.dll,133" or "Icon"="C:\Pictures\Icons\SomeRandomIcon.ico".

Unfortunately, Microsoft are anything but consistent. You're not going to find everything you're looking in the places I listed. A lot of things are in shellex (copy as path for example) and operate under different rules than what I've told you about.

In the case of copy as path, I simply deleted it from the context menu and made my own which I'm attaching here for your convenience. Open notepad, and copy the content of each reg files I put up here. Right click them and select merge.

Copy As Path - Delete MS Vanilla Version from Shift Menu.reg:

Windows Registry Editor Version 5.00

[-HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers\CopyAsPathMenu]

Copy as Path Enable in regular menu.reg

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\Copy as Path]
"Icon"="C:\\Windows\\system32\\SHELL32.dll,133"
[HKEY_CLASSES_ROOT\*\shell\Copy as Path\command]
@="cmd.exe /c echo %1|clip"

[HKEY_CLASSES_ROOT\Directory\shell\Copy as Path]
"Icon"="C:\\Windows\\system32\\SHELL32.dll,133"
[HKEY_CLASSES_ROOT\Directory\shell\Copy as Path\command]
@="cmd.exe /c echo %1|clip"

[HKEY_CLASSES_ROOT\Directory\Background\shell\Copy as Path]
"Icon"="C:\\Windows\\system32\\SHELL32.dll,133"
[HKEY_CLASSES_ROOT\Directory\Background\shell\Copy as Path\command]
@="cmd.exe /c echo %V|clip"

Copy as Path Enable - with quotes - in shift menu.reg

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\Copy as Path (With Quotes)]
"Extended"=""
"Icon"="C:\\Windows\\system32\\SHELL32.dll,133"
[HKEY_CLASSES_ROOT\*\shell\Copy as Path (With Quotes)\command]
@="cmd.exe /c echo \"%1\"|clip"

[HKEY_CLASSES_ROOT\Directory\shell\Copy as Path (With Quotes)]
"Extended"=""
"Icon"="C:\\Windows\\system32\\SHELL32.dll,133"
[HKEY_CLASSES_ROOT\Directory\shell\Copy as Path (With Quotes)\command]
@="cmd.exe /c echo \"%1\"|clip"

[HKEY_CLASSES_ROOT\Directory\Background\shell\Copy as Path (With Quotes)]
"Extended"=""
"Icon"="C:\\Windows\\system32\\SHELL32.dll,133"
[HKEY_CLASSES_ROOT\Directory\Background\shell\Copy as Path (With Quotes)\command]
@="cmd.exe /c echo \"%V\"|clip"

Now you can go about messing with registry in RegEdit.exe but it is an intensely limited tool. I would just recommend you write your .reg files and merge them as needed. This will also make it easy to re-apply your changes when you do fresh windows installs. You can also export changes you make in RegEdit by exporting individual keys as a .reg file.

Solution 3:

Unfortunately, this can't really be done for the CopyAsPathMenu (GUID {f3d06e7c-1e45-4a26-847e-f9fcdee59be0}) shell "extension" that comes with Windows 7, because its QueryContextMenu method has all the useful stuff conditioned on a check for the CMF_EXTENDEDVERBS flag.

In theory, you can see this by disassembling SHELL32.dll!?QueryContextMenu@CCopyAsPathMenu@@UAGJPAUHMENU__@@IIII@Z, but if you don't have a clue what kind of moon language I'm using then you'd have a lot to learn before you could; some of it might be in the Debugging Tools for Windows help file (debugger.chm).