Windows 如何向特定文件扩展名上下文菜单添加新项

Windows 如何向特定文件扩展名上下文菜单添加新项,windows,window,registry,Windows,Window,Registry,如何将新项目添加到特定的文件扩展名上下文菜单(例如,添加到.mp3文件) 我还注意到,在所有窗口的上下文菜单中都有公共项,它们是否都共享/继承一个上下文菜单?它在哪里:哪一个是文本 调用什么样的键以及如何生成它们(例如{11dbb47c-a525-400b-9e80-a54615a090c0}) 另外,您是否会推荐一份关于注册中心的简要参考资料 在运行对话框或开始菜单搜索框中键入regedit,然后按Enter键。它将打开注册表编辑器,现在转到以下键: HKEY\U CLASSES\U ROOT

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

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

调用什么样的键以及如何生成它们(例如{11dbb47c-a525-400b-9e80-a54615a090c0})

另外,您是否会推荐一份关于注册中心的简要参考资料

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

    HKEY\U CLASSES\U ROOT*(用于在“所有文件”关联菜单中添加选项) HKEY\U CLASSES\U ROOT\目录(仅用于在文件夹关联菜单中添加选项) HKEY\U CLASSES\U ROOT\Drive(仅用于在驱动器关联菜单中添加选项) HKEY\U CLASSES\U ROOT\Unknown(用于在“未知文件”上下文菜单中添加选项)

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

    • 右键单击“Shell”键并选择“New->key
    • 给它起个名字吧。假设我们给它命名为“Demo
    • 现在在右侧窗格中,双击“默认”字符串值并将其值设置为要在上下文菜单中显示的标签。比如,若你们想在上下文菜单中添加“Winamp”,那个么你们可以给它命名为“用Winamp打开”或者类似的名字
    • 现在,在这个新创建的键“Demo”下创建另一个名为“command”的键,并在右侧窗格中设置应用程序路径的“Default”值。对于ex,对于winamp,您可以设置其值
      %programfiles%\winamp\winamp.exe
  • 可以找到对此的完整参考

    如何向特定文件扩展名上下文菜单添加新项

    如何通过注册表创建上下文菜单项项已在中介绍。这是广泛和做得很好,没有必要在这里重复

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

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

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

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


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

    @AndrewxXx您到底想做什么?你是在寻找一个注册表技巧,让你的应用程序成为一个处理器,还是你在寻找一个实际的上下文菜单处理器?不只是C++,你可以在几分钟内用COM Delphi编写COM的东西。