【问题标题】:Adding a context menu item in Windows for a specific file extension在 Windows 中为特定文件扩展名添加上下文菜单项
【发布时间】:2018-02-03 13:06:52
【问题描述】:

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

我已尝试按照以下问题的说明进行操作:How 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 文件是否存在硬编码限制?

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

任何指导将不胜感激。

【问题讨论】:

    标签: windows registry contextmenu custom-contextmenu


    【解决方案1】:

    实现这一点的一般步骤如下:

    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"

    【讨论】:

      【解决方案2】:

      这是基于andromeda947的回答here

      如果您有管理员权限,则可以使用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:我做了一个工具来做到这一点

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

      regwincontext.exe dll "notepad it" C:\Windows\notepad.exe
      

      【讨论】:

      • 不错的实用程序。只是一个建议,更新上面的评论以使用双引号与单引号。单引号将显示在上下文菜单中。 regwincontext.exe dll “记事本” C:\Windows\notepad.exe
      猜你喜欢
      • 1970-01-01
      • 2019-12-01
      • 2011-01-08
      • 1970-01-01
      • 2015-05-25
      • 1970-01-01
      • 2010-10-30
      • 1970-01-01
      相关资源
      最近更新 更多