Microsoft 页面上的 Handlers 有一个关于 Handler Names
的部分它给出了 IContextMenu
接口的
Handler Subkey Name类型的示例:
HKEY_CLASSES_ROOT
MyProgram.1
ShellEx
ContextMenuHandlers
然后它说:
在“Handler Subkey name”键下创建一个子键,其名称 是 Shell 扩展的 CLSID 的字符串版本。
但是在下面的扩展处理程序注册示例部分中它说:
要启用特定处理程序,请在扩展名下创建一个子项 处理程序类型键以及处理程序的名称。 ...设置默认值 name 子键的值转换为处理程序 GUID 的字符串形式。
并给出了一个例子:
Shellex
ContextMenuHandler
MyCommand
(Default) = {00000000-1111-2222-3333-444444444444}
因此,在第一部分中,它说使用
ContextMenuHandler
下的 CLSID 字符串,但没有提及默认值。第二个它说使用处理程序的(友好)名称并将默认值设置为 CLSID/GUID。
下一步,查看注册表,我发现它是两种方式完成的,有时使用 GUID,有时使用默认值带有 GUI 的友好名称。
哪个是正确的?或者这并不重要(看起来确实如此)?
您可以选择任何一种方式:
这是最有效的方法:
Shellex
ContextMenuHandler
{00000000-1111-2222-3333-444444444444}
(Default) = UniqueFriendlyName
这也可行,但需要额外尝试查找 {GUID}
Shellex
ContextMenuHandler
UniqueFriendlyName
(Default) = {00000000-1111-2222-3333-444444444444}