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

Ela*_*lan 83 explorer contextmenu

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

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

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

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

jum*_*ack 178

右键单击 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. 在此密钥中添加一个新密钥,命名命令(强制名称)
  3. 编辑"command"中的"default"属性到 myprogrampath\path\path\executable.exe%1,将所选文件的文件路径和名称传递给自定义程序

更多定制:

  • 添加图标:添加regedit.exe为在步骤1中创建的密钥命名的字符串值,其值与图标资源路径匹配.您还可以提供整数参数以指定要使用的图标.例:HKEY_CLASSES_ROOT\Directory\Background\shell
  • 仅在shift-click上显示:添加HKEY_CURRENT_USER\Software\Classes\directory\Background\shell为在步骤1中创建的key 命名的空字符串值
  • 自定义菜单条目标签:更改在步骤1中创建的密钥的默认值
  • 更改菜单项的位置:添加一个名为字符串值HKEY_CLASSES_ROOT\Directory\shell与一个:HKEY_CURRENT_USER\Software\Classes\directory\shell,HKEY_CLASSES_ROOT\*\shell

  • 应该是`"%1"`以防路径有空格. (17认同)
  • 关于我之前的评论:可以通过用'%V`替换'%1`来解决问题. (8认同)
  • 立即地。甚至不需要打开新的资源管理器窗口:右键单击即可加载新设置。 (5认同)
  • `HKEY_CLASSES_ROOT\Directory\Background\shell`只能影响对目录背景的右键单击 (2认同)

Ela*_*lan 19

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

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


jum*_*ack 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"
Run Code Online (Sandbox Code Playgroud)

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

注意路径中的双退格:\\


Bob*_*nes 8

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

我发现最简单的方法是将一个字符串值添加到名为"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();
Run Code Online (Sandbox Code Playgroud)

  • 感谢您通过C#提供示例代码.对于想要通过应用程序快速完成此操作的任何人来说,这都是一个小帮助. (2认同)
  • 不幸的是,"AppliesTo"值似乎对"Directory\Background"条目没有任何影响.有没有人知道如何右键单击文件夹的背景可以实现类似的限制? (2认同)

Dor*_*Grv 6

我发现真正有效的唯一好的解决方案是: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"
Run Code Online (Sandbox Code Playgroud)

如果我导出它,我会得到一个 .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\""
Run Code Online (Sandbox Code Playgroud)