如何将文件夹的上下文菜单项添加到Windows资源管理器

时间:2013-12-08 02:52:15

标签: contextmenu explorer

我已经了解了如何通过向注册表添加密钥,在Windows资源管理器上向文件添加右键单击上下文菜单项。即我可以在资源管理器中右键单击一个文件,然后针对该文件运行自定义应用程序。

我想对一个文件夹做同样的事情,但还没有找到办法(尚未)。我看到有关创建/编写自定义上下文菜单处理程序的文章,但我宁愿不去那里。

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

我希望能够将自定义应用程序添加到上下文菜单中,并使其适用于文件和文件夹。有没有办法在不编写上下文菜单处理程序的情况下执行此操作?

6 个答案:

答案 0 :(得分:163)

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

  1. HKEY_CLASSES_ROOT \ Directory \ Background \ shell 如果您是管理员
  2. HKEY_CURRENT_USER \ Software \ Classes \ directory \ Background \ shell (如果您是普通用户)

  3. 右键单击Windows资源管理器右侧面板中的文件夹>的上下文菜单:

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

    3. 任何文件的上下文菜单:

        如果您是管理员,则
      1. HKEY_CLASSES_ROOT \ * \ shell
      2. HKEY_CURRENT_USER \ Software \ Classes \ * \ shell 如果您是普通用户
      3. 在所有情况下:

        1. 在“shell”下添加一个新密钥,将其命名为您想要的名称 上下文菜单项
        2. 在此密钥中添加一个名为命令(强制名称)
        3. 的新密钥
        4. 编辑“command”中的“default”属性 myprogrampath \ path \ path \ executable.exe%1 以传递文件路径和 所选文件的名称为自定义程序

        5. 更多自定义:

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

答案 1 :(得分:18)

我在下面的文章中找到了解决方案,该文章介绍了如何通过文件注册表以及文件夹来执行此操作:

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

答案 2 :(得分:7)

我回去了,并在另一个topic中回答了这个问题,因为这个问题似乎没有特别多。

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

在我的示例中,我希望它只查看T驱动器,因此我的String值为“AppliesTo”:“under: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();

答案 3 :(得分:0)

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

在HKEY_CLASSES_ROOT \ SystemFileAssociations \ 您的扩展名 \ shell \ command中添加键 使用您想执行的命令修改最后一个键。

出于我的目的,它是:

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

如果我将其导出,则会得到一个.reg:

[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\""

答案 4 :(得分:0)

找到了一个更清洁,更轻松,更快速的解决方案:创建一个文本文件,将其填充这些内容,根据需要进行更新,使用.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文件保存在安全的地方。如果您在启动文件后手动编辑注册表,请右键单击并选择“导出”。

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

答案 5 :(得分:0)

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

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 /?