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.

4
  • I think the key you want is HKEY_CLASSES_ROOT\Directory\Background May 1, 2012 at 18:38
  • 1
    thanx @Amazed that was really close... it is actually: [HKEY_CLASSES_ROOT\Directory\Background\shell\commandNameHere]
    – xero
    May 1, 2012 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 1, 2012 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 6, 2012 at 14:12

3 Answers 3

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
1
  • 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.
    – user456803
    Jun 9, 2015 at 7: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;}
5
  • 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, 2016 at 10:53
  • 1
    Could you edit your answer to explain a little more what your code does?
    – Burgi
    Apr 19, 2016 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, 2016 at 8: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, 2016 at 13:08
  • but I think question req is changed .. it may help him but not the exact solution..
    – Kashif Meo
    Apr 20, 2016 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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.