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

我已经知道如何通过向注册表添加键来向文件资源管理器上的文件添加右击上下文菜单项。也就是说,我可以在资源管理器中右键单击一个文件,然后对该文件运行一个自定义应用程序。

我想做同样的文件夹,并没有找到一种方法来做到这一点(尚未)。我看到过关于创建/编写自定义上下文菜单处理程序的文章,但我不想去那里。

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

我希望能够添加我的自定义应用程序的上下文菜单,并有它的工作都文件和文件夹。有没有办法不用写上下文菜单处理程序就可以做到这一点?


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

以下两篇文章提供了额外的信息和选择:

126495 次浏览

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

  • 在右边面板的文件资源管理器或目录背景的 右击左面板中的文件夹上下文菜单:
  1. 如果您是管理员,则为 HKEY_CLASSES_ROOT\Directory\Background\shell
  2. 如果你是一个正常的用户
  • 文件资源管理器 右键单击右面板中的文件夹的上下文菜单:
  1. 如果您是管理员,则为 HKEY_CLASSES_ROOT\Directory\shell
  2. 如果你是一个正常的用户
  • 任何文件的上下文菜单:
  1. 如果您是管理员,则为 HKEY_CLASSES_ROOT\*\shell
  2. 如果你是一个正常的用户

在所有情况下:

  1. shell下添加一个新键,将其命名为希望命名为 上下文菜单项
  2. 在这个密钥中添加一个名为 command(强制名称)的新密钥
  3. command中的 default属性编辑为 传递文件路径和 所选文件的名称到您的自定义程序(对于 .../Directory/Background.../directory/Background使用 %V而不是 %1)

更多定制:

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

我回去,也回答了这在另一个 话题,因为似乎没有太多关于这个问题具体。

我发现最简单的方法是向名为“ AppliesTo”的键添加一个 String 值,并将其值设置为“ 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();

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

在 HKEY _ CLASSES _ ROOT SystemFileAssociations 你的分机 shell 命令中添加键 用要执行的命令修改最后一个键。

我的目的是:

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

找到了一个更干净,更简单,更快捷的解决方案: 创建一个文本文件,填写这些内容,更新它到您的需要,保存与。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"

通过这种方式,您还可以备份配置: 只需保存。在一个安全的地方注册文件。如果在启动文件后手动编辑注册表,请右键单击并选择“ export”。

小心路径中的双后退空间:

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

reg add "HKEY_CLASSES_ROOT\Directory\shell\Refi2\command" /d "powershell.exe -noexit -command Set-Location -literalPath '%V'"
  • - d: 执行值[ app name exe ]。
  • - v: 在命令键中创建一个新的子键。
  • - f: 强行覆盖密钥,如果已经存在。
  • Exe-noexit-command Set-Location-LiteralPath’% V’ 可以指定 你的前任的路径来代替这个命令。

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

reg add /?