【问题标题】:How add context menu item to Windows Explorer for folders [closed]如何将上下文菜单项添加到 Windows 资源管理器的文件夹 [关闭]
【发布时间】:2013-12-08 02:52:14
【问题描述】:

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

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

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

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


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

以下两篇文章提供了更多信息和选项:

【问题讨论】:

    标签: contextmenu explorer windows-shell-extension-menu


    【解决方案1】:

    在注册编辑器(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. command 中的default 属性编辑为 myprogrampath\path\path\executable.exe "%1" 传递文件路径和 将所选文件的名称添加到您的自定义程序中(对于 .../Directory/Background.../directory/Background 情况,请使用 %V 而不是 %1

    更多自定义:

    • 添加图标:为第 1 步创建的键添加一个名为 icon 的字符串值,其值与图标资源路径匹配。您还可以提供一个整数参数来指定要使用的图标。示例:%SystemRoot%\System32\shell32.dll,3
    • 仅在按住 shift-click 时显示:为第 1 步创建的键添加一个名为 Extended 的空字符串值
    • 自定义菜单条目标签:更改第 1 步创建的键的默认值
    • 更改菜单条目位置​​:添加一个名为 Position 的字符串值,其中之一是:TopBottom

    【讨论】:

    • HKEY_CLASSES_ROOT\Directory\Background\shell 只能影响右键单击目录背景
    • 如果路径有空格,应该是"%1"
    • 这些应该什么时候生效?他们需要重新启动吗?
    • 马上。甚至不需要打开新的资源管理器窗口:只要您右键单击,就会加载新设置。
    • 关于我之前的评论:问题可以通过将%1替换为%V来解决。
    【解决方案2】:

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

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

    【讨论】:

    • 我们要更换什么零件?只是MenuItemNameMenuItemNameBackground
    • %1 仅适用于我的 Windows 10 上的左侧面板,对于右侧面板,我使用 %V 代替。
    【解决方案3】:

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

    我发现最简单的方法是向名为“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();
    

    【讨论】:

    • 感谢您提供通过 C# 执行此操作的示例代码。对于想要通过应用快速完成此操作的任何人来说,这都是一个小小的帮助。
    • 不幸的是,“AppliesTo”值似乎对“Directory\Background”条目没有任何影响。有谁知道右键单击文件夹背景可以实现类似的限制吗?
    【解决方案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\""
    

    【讨论】:

      【解决方案5】:

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

      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 /?
      

      【讨论】:

        猜你喜欢
        • 2023-03-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-18
        • 2016-05-10
        • 1970-01-01
        • 2015-07-11
        • 1970-01-01
        相关资源
        最近更新 更多