Copy as path in windows context menu

早过忘川 提交于 2019-12-01 15:31:22

You can add a link to the context menu by fiddling with the File Types dialog, or using the registry. In the registry, the path is HKEY_CLASSES_ROOT\*\shell. Add a key under that named "Copy as path", and a key under that named "command". Change command's default string value to "c:\your-program.exe %1", and when the user selects "Copy as path" it will run your executable with that path as the argument. Now your executable just needs to write the path passed in to it to the clipboard

You will need to write your own shell namespace extension. A sample on how to do that using C# is available here. There is many examples on how to do that in C++ on web too.

The official documentation on the topic is available at MSDN. A specific article on this topic is Creating Context Menu Handlers.

Windows Registry Editor Version 5.00


;%%%%%%%%%%%%%%%% COPY PATH NO QUOTES %%%%%%%%%%%%%%%%

;hex(2) below deciphers as:
;cmd /c <nul (set/p var="%1")|clip
[HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\Copy Path No Quotes]
"Icon"="imageres.dll,-5302"
[HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\Copy Path No Quotes\command]
@=hex(2):63,00,6D,00,64,00,20,00,2F,00,63,00,20,00,\
  3C,00,6E,00,75,00,6C,00,20,00,28,00,73,00,65,00,74,00,2F,00,70,00,20,00,\
  76,00,61,00,72,00,3D,00,22,00,25,00,31,00,22,00,29,00,7C,00,63,00,6C,00,\
  69,00,70,00,00,00

;hex(2) below deciphers as:
;cmd /c <nul (set/p var="%V")| clip
[HKEY_CLASSES_ROOT\Directory\Background\shell\Copy Path No Quotes]
"Icon"="imageres.dll,-5302"
[HKEY_CLASSES_ROOT\Directory\Background\shell\Copy Path No Quotes\command]
@=hex(2):63,00,6D,00,64,00,20,00,2F,00,63,00,20,00,\
  3C,00,6E,00,75,00,6C,00,20,00,28,00,73,00,65,00,74,00,2F,00,70,00,20,00,\
  76,00,61,00,72,00,3D,00,22,00,25,00,56,00,22,00,29,00,7C,00,20,00,63,00,\
  6C,00,69,00,70,00,00,00

;%%%%%%%%%%%%%%%% COPY PATH WITH QUOTES %%%%%%%%%%%%%%%%

;hex(2) below deciphers as:
;cmd /c <nul echo|set/p var=""%1""|clip
[HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\Copy Path With Quotes]
"Icon"="imageres.dll,-5302"
[HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\Copy Path With Quotes\command]
@=hex(2):63,00,6D,00,64,00,20,00,2F,00,63,00,20,00,\
  3C,00,6E,00,75,00,6C,00,20,00,65,00,63,00,68,00,6F,00,7C,00,73,00,65,00,\
  74,00,2F,00,70,00,20,00,76,00,61,00,72,00,3D,00,22,00,22,00,25,00,31,00,\
  22,00,22,00,7C,00,63,00,6C,00,69,00,70,00,00,00

;hex(2) below deciphers as:
;cmd /c <nul echo|set/p var=""%V""|clip
[HKEY_CLASSES_ROOT\Directory\Background\shell\Copy Path With Quotes]
"Icon"="imageres.dll,-5302"
[HKEY_CLASSES_ROOT\Directory\Background\shell\Copy Path With Quotes\command]
@=hex(2):63,00,6D,00,64,00,20,00,2F,00,63,00,20,00,\
  3C,00,6E,00,75,00,6C,00,20,00,65,00,63,00,68,00,6F,00,7C,00,73,00,65,00,\
  74,00,2F,00,70,00,20,00,76,00,61,00,72,00,3D,00,22,00,22,00,25,00,56,00,\
  22,00,22,00,7C,00,63,00,6C,00,69,00,70,00,00,00
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!