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

how to add new items to certain file extension context menu

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

我还注意到 windows 的所有上下文菜单中都有共同的项目,它们都是 share/inherit 一个上下文菜单吗?它在哪里:哪个用于文本

这些密钥叫什么以及如何生成它们(例如 {11dbb47c-a525-400b-9e80-a54615a090c0})

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

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

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

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

    • 右键单击“Shell”键和select“新建 -> 键” .
    • 随便起一个名字。假设我们给它命名为“Demo”.
    • 现在在右侧窗格中,双击 "Default" 字符串值并将其值设置为要在上下文菜单中显示的标签。就像如果你想在上下文菜单中添加 "Winamp",那么你可以给它命名 "Open with Winamp" 或类似的。
    • 现在在这个新创建的键“Demo”下创建另一个键,名称为 "command",并在右侧窗格中将值 "Default" 设置为申请途径。例如,对于 winamp 你可以设置它的值 %programfiles%\Winamp\winamp.exe.

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

how to add new items to certain file extension context menu

this MSDN article 已经介绍了如何调整注册表以创建上下文菜单项条目。内容广泛,做得很好,这里就不用赘述了。

I've also noticed that there is common items in all context menus across the windows

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

for instance {11dbb47c-a525-400b-9e80-a54615a090c0}

这是一个自定义 shell 扩展处理程序的示例,您在 HKCR\Folder 注册表项中找到了这个,该注册表项可将项目添加到任何目录。可以将其视为一个插件,它为 Explorer 添加了它本身不具备的功能。 {guid} 选择 Explorer 加载的可执行文件来实现该项目。导航到 HKCR\Classes\CLSID\{guid} 查看该文件,您会看到它是由 c:\windows\system32\explorerframe.dll

实现的

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