【问题标题】:Windows shell add item to context menu when click on blank part of folder单击文件夹的空白部分时,Windows shell 将项目添加到上下文菜单
【发布时间】:2011-06-21 14:00:17
【问题描述】:

很抱歉,如果以前有人问过这个问题,我一直在四处寻找,很难找到我想要的。

我知道如何将上下文菜单项添加到文件夹中,如下所示:

[HKEY_CLASSES_ROOT\Folder\shell\console2]
@="Open Console2 Here"

[HKEY_CLASSES_ROOT\Folder\shell\console2\command]
@="C:\\Program Files\\Console\\console.exe -d \"\"%1\"\""

但是,这只适用于右键单击文件夹。我想要它,以便您可以在文件夹内,然后单击该文件夹的空白部分并获取上下文菜单项。我也尝试过HKEY_CLASSES_ROOT\Directory\shell,但效果相同。

【问题讨论】:

标签: windows shell registry contextmenu


【解决方案1】:

以上都不适合我。

但确实如此(在 Windows 7 Pro x64 上测试):

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Folder\shell\Open console here\command]
@="u:\\users\\dave\\data\\bin\\Console2\\Console.exe cmd -r \"/k pushd %L\""

将路径替换为您的 console.exe 副本的路径(当然)。

【讨论】:

  • 这会在您右键单击文件夹/目录时将其添加到上下文菜单中,这很有用,但问题是如何将其添加到右键单击时出现的上下文菜单中文件夹背景。
【解决方案2】:

根据我对 Windows XP (SP3) 的个人经验,您可以使用以下 .reg 文件通过上下文菜单项打开 当前 目录中的 Console2:


  Windows Registry Editor Version 5.00 
[HKEY_CLASSES_ROOT\Folder\shell\console2]
@="Console2 Here"
[HKEY_CLASSES_ROOT\Folder\shell\console2\command]
@="C:\Program Files\Console\console.exe -d \"%1\""


如果您查看 regedit.exe 中的键值,您应该会看到:
C:\Program Files\Console\console.exe -d "%1"


而不是:

C:\Program Files\Console\console.exe -d ""%1"" 

后者将在其默认启动目录中打开 Console2。

【讨论】:

    【解决方案3】:

    Console2 摇摆不定。我在资源管理器上下文菜单中添加了一个“Cmd here (Console2)”项。

    将下面的文本保存在名为 open-console2.reg 的文件中,然后打开它以将其导入 Windows 注册表。

    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\Background\shell\console2]
    @="Cmd here (Console2)"
    "NoWorkingDirectory"=""
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\Background\shell\console2\command]
    @="\"C:\\Program Files (x86)\\Console2\\Console.exe\" -d \"%V\"\\"
    

    奖励 'bash here' 项目(假设您有一个名为 'bash' 的 Console2 选项卡)。

    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\Background\shell\console2_bash]
    @="Bash here (Console2)"
    "NoWorkingDirectory"=""
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\Background\shell\console2_bash\command]
    @="\"C:\\Program Files (x86)\\Console2\\Console.exe\" -t Bash -d \"%V\"\\"
    

    【讨论】:

    • 为什么我可以导入这个?它说你只能从注册表编辑器导入二进制注册表文件?可能与字符编码有关?
    【解决方案4】:

    如果你更喜欢 MinGW,这里就是。

    #!/bin/sh
    reg add 'HKCR\Directory\Background\shell\sh' -d 'Open Bash window here'
    
    reg add 'HKCR\Directory\Background\shell\sh\command' \
    -d 'C:\MinGW\msys\1.0\bin\sh.exe -l'
    
    printf 'cd -' >> ~/.profile
    

    superuser.com/a/387273

    【讨论】:

      【解决方案5】:

      这也可以在 XP 中实现。 首先使用Windows键+ R打开程序运行, 并在文本框中键入 Regedit。 按 Enter。 在注册表中打开键:HKEY_CLASSES_ROOT 然后 : * 您现在将看到一个名为 : shell 的键 右键单击外壳并指向新建。 单击键上的 de 菜单。 现在键入您希望出现在右键单击菜单中的名称。 右键单击您选择的名称,再次指向新建并单击键。 现在输入:命令 单击命令并在注册表的右窗格中双击(默认)。 在文本框 Value Data 中,键入要通过右键单击菜单中选择的名称打开的应用程序的路径。 例如:“C:\Program Files\CCleaner\CCleaner.exe” 然后在路径后键入 : %1, 并在路径末尾和 %1 之间留一个空格 它应该是这样的:

      "C:\Program Files\CCleaner\CCleaner.exe" %1

      这样,您可以打开任何您想要的应用程序。 只有一个缺点, 您必须右键单击另一个文件才能看到您可以打开应用程序的所选名称。 当您右键单击文件夹时,这将不起作用。

      【讨论】:

      • 您的答案只是产生了与 OP已经 说他知道该怎么做的相同的 .reg 导出,但是,您的解决方案甚至不适用于单击文件夹,同样,更重要的是,在 OP 要求时单击 Windows 资源管理器窗口中的空白区域。他 (@user380527) 自己的答案是正确的。
      【解决方案6】:

      @Ben Voigt 提到了 TortoiseSVN,你也可以看到WinMerge shell extension source code,或者最后:create your own extension from scratch;我想为 XP 做类似的事情,但我现在还有很多其他事情要做。

      作为一种解决方法,您可以在 XP 中打开一个文件夹,然后选择 View->Explorer Bar->Folders,让文件夹树在左侧,然后您可以右键单击该文件夹(活动文件夹会自动突出显示)。

      【讨论】:

        【解决方案7】:

        我想出了答案。文件夹其实是Directory\Background,你要把NoWorkingDirectory的空字符串值加进去,命令中的%1就变成了%V

        [HKEY_CLASSES_ROOT\Directory\Background\shell\console2]
        @="Open Console2 Here"
        "NoWorkingDirectory"=""
        
        [HKEY_CLASSES_ROOT\Directory\Background\shell\console2\command]
        @="C:\\Program Files\\Console\\console.exe -d \"\"%V\"\""
        

        来源: saviert 在http://www.howtogeek.com/howto/windows-vista/make-command-prompt-here-always-display-for-folders-in-windows-vista#comment-57856的评论

        【讨论】:

        • 仅供参考:这不适用于 XP。该注册表项仅适用于 Vista 和更高版本的操作系统。
        • 有谁知道如何在 xp 上进行这项工作?跨平台选项是最好的,但我会尽我所能。
        • 对于通过 regedit util 输入此命令的任何人,命令值应该有单斜杠并且仅在 %V 周围加上引号。看起来像这样取决于你的路径C:\Program Files (x86)\Console2\Console.exe -d "%V"
        • 这适用于 XP,具体取决于您使用的编辑器以及您使用的是 regEdit4 还是 regedit5 格式(遵循 @gingerbreadboy 关于单斜杠的说明)。这是来自 Microsoft 的指南:support.microsoft.com/kb/310516
        • @FlakDiNenno Stefan 指的是注册表项没有创建上下文菜单条目,而不是 regedit 拒绝您创建它。
        【解决方案8】:

        我认为 TortoiseSVN 安装程序的相关部分是here。也许您可以从中找出所有必要的注册表项。

        【讨论】:

        • 虽然乌龟 svn 的问题在于他们实际上使用 c++ 中的处理程序来执行此操作,这对于这样的事情来说太过分了。但感谢您的回复
        猜你喜欢
        • 2016-03-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多