如何为文件夹添加上下文菜单项到Windows资源管理器中[关闭]


100

我发现了如何通过向注册表添加项来向Windows资源管理器上的文件添加右键单击上下文菜单项。即,我可以右键单击资源管理器中的文件,然后对该文件运行自定义应用程序。

我想对文件夹做同样的事情,但还没有找到一种方法来做(至今)。我看到了有关创建/编写自定义上下文菜单处理程序的文章,但我不想去那里。

我在这里找到了有关如何将层叠上下文菜单项添加到桌面和资源管理器中的“计算机”的文章,但这不适用于任何文件夹。

我希望能够将我的自定义应用程序添加到上下文菜单中,并使其在文件和文件夹上都能正常工作。有没有一种方法,而无需编写上下文菜单处理程序?


我在下面的文章中找到了解决方案,该文章描述了如何通过注册表对文件和文件夹执行此操作:

以下两篇文章提供了其他信息和选项:


1
这个问题已经开放了6年?!谁在六天前关闭了它?
Andrew

我不喜欢StackOverflow的唯一事情是小丑关闭问题或将问题标记为题外话。
Michael

Answers:


209

在注册编辑器(regedit.exe)中找到:

  • 右键单击 Windows资源管理器左面板中文件夹或右面板中目录背景的上下文菜单:

    1. HKEY_CLASSES_ROOT\Directory\Background\shell 如果您是管理员
    2. HKEY_CURRENT_USER\Software\Classes\directory\Background\shell 如果您是普通用户
  • 右键单击 Windows资源管理器右面板中文件夹的上下文菜单:

    1. HKEY_CLASSES_ROOT\Directory\shell 如果您是管理员
    2. HKEY_CURRENT_USER\Software\Classes\directory\shell 如果您是普通用户
  • 任何文件的上下文菜单:

    1. HKEY_CLASSES_ROOT\*\shell 如果您是管理员
    2. HKEY_CURRENT_USER\Software\Classes\*\shell 如果您是普通用户

在所有情况下:

  1. 在下添加一个新键shell,将其命名为您要命名上下文菜单项的名称
  2. 在此密钥内添加一个名为command(强制性名称)的新密钥
  3. 编辑default物业commandmyprogrampath\path\path\executable.exe %1所选文件的文件路径和名称传递给您的自定义程序

更多定制:

  • 添加图标:添加一个icon为在步骤1中创建的键命名的字符串值,该值与图标资源路径匹配。您还可以提供一个整数参数来指定要使用的图标。例:%SystemRoot%\System32\shell32.dll,3
  • 仅在按住Shift并单击时显示:添加一个空字符串值,该值以Extended在步骤1中创建的键命名
  • 自定义菜单项标签:更改在步骤1中创建的键的默认值
  • 更改菜单项的位置:添加一个字符串值,其名称Position为:TopBottom

2
HKEY_CLASSES_ROOT\Directory\Background\shell只能影响在目录背景上单击鼠标右键
Amos

21
应该"%1"以防路径中有空格。
Blrp

3
立即。甚至不需要打开新的资源管理器窗口:右键单击即可加载新设置。
Jumpjack '16

1
似乎环境变量在其中不起作用Command,对吗?
Jack Lu)

14
关于我之前的评论:可以通过替换%1为来解决此问题%V
迈克尔·赫尔曼

10

我回过头来,并在另一个主题中也回答了这个问题,因为在这个问题上似乎没有太多内容。

我发现最简单的方法是将字符串值添加到名为“ AppliesTo”的键并将其值设置为“ under:{path}”

在我的示例中,我希望它仅在T盘中查找,因此我的String值为“ AppliesTo”:“在:T:”下。

在C#中,可以通过以下操作轻松实现:

RegistryKey _key = Registry.ClassesRoot.OpenSubKey("Folder\\Shell", true);
RegistryKey newkey = _key.CreateSubKey("My Menu Item");
newkey.SetValue("AppliesTo", "under:T:");

RegistryKey subNewkey = newkey.CreateSubKey("Command");
subNewkey.SetValue("", "C:\\yourApplication.exe");
subNewkey.Close();

newkey.Close();
_key.Close();

2
感谢您提供通过C#执行此操作的示例代码。对于想要通过应用程序快速执行此操作的任何人来说,这都是一个小帮助。
Ayo I

2
不幸的是,“ AppliesTo”值似乎对“ Directory \ Background”条目没有任何影响。有谁知道右键单击文件夹背景可以实现类似的限制吗?
cl0rkster

6

找到了一个更干净,更轻松,更快速的解决方案:创建一个文本文件,将其填充这些内容,根据需要进行更新,使用.reg后缀保存并启动它(它不需要管理员特权,因为它可以访问注册表的用户部分):

Windows Registry Editor Version 5.00

; Setup context menu item for click on right panel:
[HKEY_CURRENT_USER\Software\Classes\directory\Background\shell\MenuItemNameBackground\command]
@="C:\\yourpath\\executable.exe \"%1\""

; Optional: specify an icon for the item:   
; HKEY_CURRENT_USER\Software\Classes\directory\Background\shell\MenuItemNameBackground]
;"icon"="C:\\yourpath\\appicon.ico"

; Optional: specify a position in the menu
; HKEY_CURRENT_USER\Software\Classes\directory\Background\shell\MenuItemNameBackground]
;"position"="Bottom"

; -------------------------------------------------------------------------------------

; Setup context menu item for click on folders tree item:
[HKEY_CURRENT_USER\Software\Classes\directory\shell\MenuItemNamePanel\command]
@="C:\\yourpath\\executable.exe \"%1\""

; Optional: specify an icon for the item:   
; [HKEY_CURRENT_USER\Software\Classes\directory\shell\MenuItemNamePanel]
;"icon"="C:\\yourpath\\appicon.ico"

; Optional: specify a position in the menu
; [HKEY_CURRENT_USER\Software\Classes\directory\shell\MenuItemNamePanel]
;"position"="Top"

这样,您还可以备份配置:只需将.reg文件保存在安全的地方。如果在启动文件后手动编辑注册表,请右键单击并选择“导出”。

当心路径中的双退格键:\\


1

我发现真正可行的唯一好的解决方案是:https : //superuser.com/questions/1097054/shell-context-menu-registry-extension-doesnt-work-when-default-program-is-other

在HKEY_CLASSES_ROOT \ SystemFileAssociations \ your.extension \ shell \ command中添加密钥使用您要执行的命令修改最后一个密钥。

就我而言,它是:

"C:\Program Files (x86)\GPSBabel\gpsbabel.exe" -r -i gpx -f "%1" -x simplify,count=1000 -o gpx -F "%1.gpx"

如果我导出它,我得到一个.reg:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\SystemFileAssociations\.gpx\shell\Simplify gpx\command]
@="\"C:\\Program Files (x86)\\GPSBabel\\gpsbabel.exe\" -r -i gpx -f \"%1\" -x simplify,count=1000 -o gpx -F \"%1.gpx\""

1

打开命令提示符[以管理员身份运行]并执行此命令

reg add "HKEY_CLASSES_ROOT\Directory\shell\Refi2\command" /d "powershell.exe -noexit -command Set-Location -literalPath '%V'"
  • -d:要执行的值[应用程序名称exe]。
  • -v:在命令键内创建一个新的子键。
  • -f:强制覆盖该键(如果已存在)。
  • powershell.exe -noexit -command设置位置-literalPath'%V'代替它,您可以指定exe的路径。

有关更多功能的更多详细信息,请运行:-

reg add /?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.