How to Change context menu of windows Explorer

i want to edit context menu of windows Explorer. and i want to create my own menu with sub menu as shown in image. and also do some task like copy and move to other destination. Can any one please show me how to do this with registry.

Is this possible or not? if it is possible please give me step by step answer.

Folder/file 
 -->Right click
    -->List of menu(Open,copy,send to,My menu name)
       -->My menu name ->(Copy,Move) 
          -->copy -->list of "fixed" folders or destination names
                     (They are already in my Hard disk) 
                     (On click on it it will perform copy operation).

Simply i want to make sub-menu in context menu. and copy and move operation, and i want to display folders which i had created in my any drives. and also someone click on that folder it will perform copy operation. new menu


Creating cascading menus

In Windows 7 and later you can create static menus directly through the registry.

Because HKEY_CLASSES_ROOT is a combination of HKEY_CURRENT_USER and HKEY_LOCAL_MACHINE, you can register any custom verbs under the HKEY_CURRENT_USER\Software\Classes subkey. The main advantage of doing so is that elevated permission is not required.

Source: Creating Shortcut Menu Handlers

Registry template

Here's a per-user registry template you can use. Just paste it in a new text document, and apply the changes you need. Then save it as a .reg file, and merge it to the registry. The custom menu will be added to all files and folders.

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Classes\*\shell\MyMenu]
"MUIVerb"="My menu name"
"Position"="Bottom"
"SubCommands"=""

[HKEY_CURRENT_USER\Software\Classes\*\shell\MyMenu\shell\cmd1]
@="Copy"
"AttributeMask"=dword:00000001
"AttributeValue"=dword:00000001
"ImpliedSelectionModel"=dword:00000000
"MUIVerb"="@shell32.dll,-31246"

[HKEY_CURRENT_USER\Software\Classes\*\shell\MyMenu\shell\cmd1\command]
@="copy command here"

[HKEY_CURRENT_USER\Software\Classes\*\shell\MyMenu\shell\cmd2]
@="Move"
"AttributeMask"=dword:00000002
"AttributeValue"=dword:00000002
"ImpliedSelectionModel"=dword:00000000
"MUIVerb"="@shell32.dll,-4145"

[HKEY_CURRENT_USER\Software\Classes\*\shell\MyMenu\shell\cmd2\command]
@="move command here"

[HKEY_CURRENT_USER\Software\Classes\Folder\shell\MyMenu]
"MUIVerb"="My menu name"
"Position"="Bottom"
"SubCommands"=""

[HKEY_CURRENT_USER\Software\Classes\Folder\shell\MyMenu\shell\cmd1]
@="Copy"
"AttributeMask"=dword:00000001
"AttributeValue"=dword:00000001
"ImpliedSelectionModel"=dword:00000000
"MUIVerb"="@shell32.dll,-31246"

[HKEY_CURRENT_USER\Software\Classes\Folder\shell\MyMenu\shell\cmd1\command]
@="copy command here"

[HKEY_CURRENT_USER\Software\Classes\Folder\shell\MyMenu\shell\cmd2]
@="Move"
"AttributeMask"=dword:00000002
"AttributeValue"=dword:00000002
"ImpliedSelectionModel"=dword:00000000
"MUIVerb"="@shell32.dll,-4145"

[HKEY_CURRENT_USER\Software\Classes\Folder\shell\MyMenu\shell\cmd2\command]
@="move command here"

Remarks

  • The AttributeMask value specifies the SFGAO value of the bit values of the mask to test with.
  • The AttributeValue value specifies the SFGAO value of the bits that are tested.
  • The ImpliedSelectionModel specifies zero for item verbs, or nonzero for verbs on the background shortcut menu.

Source: Creating Shortcut Menu Handlers

In the template above, the AttributeMask and AttributeValue are set to 0x00000001 and 0x00000002, respectively. Those values are associated to the SFGAO_CANCOPY and SFGAO_CANMOVE constants, which determine whether the specified items can be copied/moved.

Further reading

  • Creating Static Cascading Menus
  • Creating Shortcut Menu Handlers