127

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

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

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

我希望能够将我的自定义应用程序添加到上下文菜单并让它在文件和文件夹上工作。有没有办法在不编写上下文菜单处理程序的情况下做到这一点?


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

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

4

5 回答 5

261

在注册编辑器 ( 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"将所选文件的文件路径和名称传递给您的自定义程序(对于.../Directory/Background.../directory/Background情况使用%V而不是%1

更多定制:

  • 添加图标:添加一个字符串值,名称icon为在步骤 1 中创建的键,其值与图标资源路径匹配。您还可以提供一个整数参数来指定要使用的图标。例子:%SystemRoot%\System32\shell32.dll,3
  • 仅在 shift-click 时显示:添加一个空字符串值,命名Extended为在步骤 1 中创建的键
  • 自定义菜单条目标签:更改在第 1 步创建的键的默认值
  • 更改菜单条目位置​​:添加一个以下列之一命名的字符串值PositionTop,Bottom
于 2015-04-21T10:13:24.870 回答
12

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

小心路径中的双退格:\\

于 2019-05-17T12:15:08.163 回答
10

我回去并在另一个主题中回答了这个问题,因为这个问题似乎没有太多具体内容。

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

在我的示例中,我希望它只查看 T 驱动器,因此我的字符串值为“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();
于 2016-07-06T15:41:33.063 回答
4

我发现一个真正有效的唯一好的解决方案是: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\""
于 2019-03-01T23:31:06.337 回答
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 Set-Location -literalPath '%V'你可以指定你的 exe的路径,而不是这个。

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

reg add /?
于 2019-12-13T09:54:57.903 回答