【问题标题】:how to add new items to certain file extension context menu如何将新项目添加到某些文件扩展名上下文菜单
【发布时间】:2015-05-25 13:50:15
【问题描述】:

如何将新项目添加到某些文件扩展名上下文菜单(例如 .mp3 文件)

我还注意到,跨窗口的所有上下文菜单中都有共同的项目,它们是否都共享/继承一个上下文菜单?它在哪里:哪个是文本

这些键被称为什么以及如何生成它们(例如 {11dbb47c-a525-400b-9e80-a54615a090c0})

还有您推荐的注册表的简要参考吗?

【问题讨论】:

  • @AndrewxXx 你到底想做什么?您是在寻找使您的应用程序显示为处理程序的注册表技巧,还是在寻找实际的上下文菜单处理程序?

标签: windows window registry


【解决方案1】:
  1. 在“运行”对话框或“开始”菜单搜索框中键入 regedit,然后按 Enter。它将打开注册表编辑器,现在转到以下键:

    HKEY_CLASSES_ROOT*(用于在所有文件上下文菜单中添加选项) HKEY_CLASSES_ROOT\Directory(仅用于在文件夹上下文菜单中添加选项) HKEY_CLASSES_ROOT\Drive(仅用于在 Drives 上下文菜单中添加选项) HKEY_CLASSES_ROOT\Unknown(用于在未知文件上下文菜单中添加选项)

  2. 现在在上述键下,您会找到“Shell”和“Shellex”键。这两个键都包含各种条目,当您右键单击文件、文件夹或驱动器时会显示这些条目。在此示例中,我们将使用“Shell”键:

    • 右键单击“Shell”键并选择“New -> Key”。
    • 给它起任何名字。假设我们将其命名为“Demo”。
    • 现在在右侧窗格中,双击“默认”字符串值并将其值设置为要在上下文菜单中显示的标签。就像如果你想在上下文菜单中添加“Winamp”,那么你可以给它命名为“Open with Winamp”或类似的名称。
    • 现在在这个新创建的键“Demo”下创建另一个键,名称为“command”,并在右侧窗格中将“默认”值设置为应用程序路径。例如,对于 winamp,您可以将其值设置为 %programfiles%\Winamp\winamp.exe

可以找到对此的完整参考here

【讨论】:

    【解决方案2】:

    如何将新项目添加到某些文件扩展名上下文菜单

    this MSDN article 已经介绍了如何使用注册表来创建上下文菜单项条目。内容丰富,做的很好,这里不再赘述。

    我还注意到,跨窗口的所有上下文菜单中都有共同的项目

    它们中的大多数都是 Explorer 本身理解的内置项目。有一个后门可以自己将项目添加到任何文件,使用HKCR\* 注册表项。谨慎使用它,这对用户来说很烦人。

    例如 {11dbb47c-a525-400b-9e80-a54615a090c0}

    这是一个自定义外壳扩展处理程序的示例,您在HKCR\Folder 注册表项中找到了这个,该项可以将项目添加到任何目录。把它想象成一个插件,它为 Explorer 添加了它自己没有的功能。 {guid} 选择资源管理器加载的可执行文件以实现该项目。导航到HKCR\Classes\CLSID\{guid}查看那个文件,你会看到它是由c:\windows\system32\explorerframe.dll实现的

    编写自己的 shell 扩展处理程序并不容易,它需要 C++ 中的 COM 编码技能。一种越来越模糊的编码技术。使用 C# 之类的东西在技术上是可行的,但微软强烈反对,他们不会支持它。您需要编写一个实现IContextMenu 接口的进程内COM 服务器。编程指南is here.

    【讨论】:

    • 不只是 C++,您可以在几分钟内使用 Delphi 编写 COM 代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-01
    • 1970-01-01
    • 2013-03-26
    相关资源
    最近更新 更多