在 Windows 中为特定文件扩展名添加上下文菜单项

Alb*_*erd 7 windows registry contextmenu custom-contextmenu

我正在尝试向 DLL 文件添加上下文菜单项。原因是我编写了一个应用程序,该应用程序将托管 DLL 文件撤回并部署到 GAC。该应用程序一切正常,但现在我想要右键单击 DLL 并单击“复制到 GAC”的能力。

我试图按照这个问题的说明进行操作:How to add context menu item to Windows Explorer for folders但无济于事。当我右键单击一个 DLL 时,没有出现任何新内容。

我还尝试了以下操作:https : //winaero.com/blog/add-register-dll-context-menu-commands-for-dll-files-in-windows-10/#comment-22928 - 运行了 reg文件,但也没有结果。

也许对此类操作的 DLL 文件有硬编码限制?

这是我当前的注册表设置:

在此处输入图片说明

任何指导将不胜感激。

Ste*_*eri 10

实现这一目标的一般步骤如下:

  1. 火起来 regedit
  2. 确定您的扩展程序的 ProgID - 转到HKCR\.yourextension并记下默认值(在您的情况下,dllfile
  3. 导航到HKCU\Software\Classes(对于用户)或HKLM\Software\Classes(对于所有用户)
  4. 寻找匹配的密钥(在您的情况下dllfile)-如果不存在,请创建它
  5. 确保它有一个名为 shell
  6. 添加一个子键来shell命名为你想要的命令(参考下图)
  7. 将子键添加到名为的新键中 command
  8. (Default)值修改为要执行的命令。%1将在上下文中为您提供文件的路径("由于路径中可能存在空白,请记住将其包装起来)

您似乎已完成上述所有操作,因此您可能做错了什么,因为这是我在快速理智测试后的结果:

在此处输入图片说明

所以,这里有一些我能想到的会使其行为不直观的事情:

  • 您将它添加到HKLM而不是HKCU- 由于继承的工作方式,我相信将它添加到HKLM需要重新启动,或者充其量需要重新启动 shell
  • 您已将此添加到,HKCU但您的 dll 需要提升权限才能访问
  • 你在某处有一些愚蠢的语法错误;)

我用来测试这个的示例命令很无聊 "C:\Windows\notepad.exe" "%1"


907*_*997 9

这是基于 andromeda947在此处的回答:

如果您具有管理员权限,则可以使用HKEY_CLASSES_ROOT\SystemFileAssociations\.yourextension,这更简单,因为它不需要中间 ProgID。

选项 1:手动编辑注册表

  1. HKEY_CLASSES_ROOT\SystemFileAssociations\.yourextension\shell\your menu entry text\command在该路径中创建您需要的任何密钥时添加一个新密钥(如果没有用于.yourextension添加它的密钥;如果没有用于shell添加它的密钥;等等)
  2. command(您创建的最后一个键)的默认值设置为C:\path\to\yourapp.exe "%1"

选项 2:我制作了一个工具来执行此操作

你可以在这里下载。这是如何将 notepad.exe 注册为 dll 文件的上下文菜单项的示例。

regwincontext.exe dll "notepad it" C:\Windows\notepad.exe
Run Code Online (Sandbox Code Playgroud)

由于某种原因,这已被许多供应商标记为病毒。我试图将其报告为对所有人的误报,但由于这个原因,目前这可能不是一个好的选择。

  • 是否可以添加子菜单?(即作为子菜单弹出的多个选项)。例如“Dll Tools -> 1.view、2.analyze、3等...”没关系,刚刚找到它:/sf/answers/2818968981/ (2认同)