9

I know how to add a context menu for when you click on an actual folder:

[HKEY_CLASSES_ROOT\Directory\shell\commandNameHere]

but what about clicking on nothing in a folder?

like I make a new folder on my desktop, double click to enter the folder, then right click on nothing (the folder is empty), now I want my context menu to appear in this situation.

Oliver Salzburg
  • 87,539
  • 63
  • 263
  • 308
xero
  • 91
  • I think the key you want is HKEY_CLASSES_ROOT\Directory\Background – Andrew Lambert May 01 '12 at 18:38
  • 1
    thanx @Amazed that was really close...

    it is actually: [HKEY_CLASSES_ROOT\Directory\Background\shell\commandNameHere]

    – xero May 01 '12 at 18:54
  • 5
    solved for anyone interested here's the .REG file to add this functionality to the windows context menu:

    Windows Registry Editor Version 5.00

    [HKEY_CLASSES_ROOT\Directory\Shell] @="none" [HKEY_CLASSES_ROOT\Directory\shell\gitBashHere] [HKEY_CLASSES_ROOT\Directory\Background\shell\gitBashHere] "Icon"="C:\\icons\\git-gui.ico" "MUIVerb"="git bash here" "Position"="bottom" [HKEY_CLASSES_ROOT\Directory\shell\gitBashHere\command] [HKEY_CLASSES_ROOT\Directory\Background\shell\gitBashHere\command] @="C:\\Program Files\\Console2\\Console.exe -d %v"

    – xero May 01 '12 at 19:07
  • 2
    It's allowed and encouraged to answer your own questions. If you solved your problem, post an answer and accept it. – Dennis Jun 06 '12 at 14:12

3 Answers3

11

For anyone interested, here's the .reg file to add this functionality to the windows context menu:

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\Shell]
@="none"
[HKEY_CLASSES_ROOT\Directory\shell\gitBashHere]
[HKEY_CLASSES_ROOT\Directory\Background\shell\gitBashHere]
"Icon"="C:\\icons\\git-gui.ico"
"MUIVerb"="git bash here"
"Position"="bottom" 
[HKEY_CLASSES_ROOT\Directory\shell\gitBashHere\command] 
[HKEY_CLASSES_ROOT\Directory\Background\shell\gitBashHere\command]
@="C:\\Program Files\\Console2\\Console.exe -d %v"

(Taken from xero's comment)

This adds a command to the context menu named "git bash here" with an icon, which opens a console.

The command is added under both:

  • HKEY_CLASSES_ROOT\Directory\shell, the context menu when you right-click on a folder
  • HKEY_CLASSES_ROOT\Directory\background, the context menu when you right-click on the "background" empty space while in a folder
Dennis
  • 49,727
  • 2
    Be aware of the value "none" for the default action ('@=') Without this 'none', Windows treats one of the added actions as default, so double clicking on a directory does not longer open the directory but triggers the action - which makes Windows nearly unusable. -> Set 'none' as default action allows to add contextmenu items without changing windows default behaviour. –  Jun 09 '15 at 07:51
0
void WriteContextMenu(LPSTR key, LPSTR value) {

HKEY hkey=0; DWORD disp;

if(RegCreateKeyEx(HKEY_CLASSES_ROOT, key, 0, NULL, REP_OPTION_NON_VOLATILE, KEY_WRITE,NULL, &hkey, &disp)!=ERROR_SUCCESS) 

{

     if(RegOpenKey(HKEY_CLASSES_ROOT,key,&hkey)!=ERROR_SUCCESS)
    {   

      cout<<"Unable to open Registry"<<key;

        }

}if(RegSetValueEx(hkey,TEXT(""),0,REG_SZ,(LPBYTE)value, strlen(value)*sizeof(char))!=ERROR_SUCCESS)

{

   RegCloseKey(hkey);

       cout<<"Unable to set Registry Value ";

} else{

   cout<<value<<" value has set"<<endl;
}
}int main(){LPSTR key="Folder\\shell\\Testing_App"; 

 LPSTR valueKey="Menu_Title";

 LPSTR Subkey="Folder\\shell\\Testing_App\\command";


/*Here put the path or action you want to perform like you want to
    open cmd  on your context menu so the value id */

    LPSTR valueSubKey="cmd.exe";

    WriteContextMenu(key, ValueKey); 
    WriteContextMenu(Subkey, ValueSubKey);

return 0;}
  • this will show your context menu on all folders ... when you compile this code so make sure you have administrative privileges.. Hope this code will be helpful for you – Kashif Meo Apr 19 '16 at 10:53
  • 1
    Could you [edit] your answer to explain a little more what your code does? – Burgi Apr 19 '16 at 13:49
  • While this may answer the question, it would be a better answer if you could provide some explanation why it does so. – DavidPostill Apr 20 '16 at 08:48
  • actually this code will do just create a new key for context menu. key and subkey also their values respectively. when this code compiled and run then on every folder it will show that context menu... – Kashif Meo Apr 20 '16 at 13:08
  • but I think question req is changed .. it may help him but not the exact solution.. – Kashif Meo Apr 20 '16 at 13:11
-2

Here is one solution for all context menus.

https://stackoverflow.com/questions/20449316/how-add-context-menu-item-to-windows-explorer-for-folders/20458056#20458056

But, How to pass multiple directories or files to this context menu as arguments as %1 is taking only one and when we ctrl+click multiple files, it is opening the executable mutliple times instead of sending all of them as arguments.