上下文菜单处理程序选项未出现在 shell 上下文菜单中

问题描述 投票:0回答:1

遵循创建快捷菜单处理程序,将非规范动词添加到快捷菜单:

HKEY_CLASSES_ROOT
   .myp-ms
      (Default) = MyProgram.1
   MyProgram.1
      (Default) = My Program Application
      Shell
         (Default) = doit
         doit
            (Default) = &Do It
            command
               (Default) = c:\MyDir\MyProgram.exe /d "%1"

我正在尝试为我的自定义

.base85
文件类型添加一个:

HKEY_CLASSES_ROOT
   .base85
      (Default) = Base85FileType
   Base85FileType
      (Default) = Base-85 Encoded File
      Shell
         (Default) = decode
         decode
            (Default) = &Decode It
            command
               (Default) = notepad.exe "%1"

你可以在我的

.reg
转储中看到:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.base85]
@="Base85FileType"

[HKEY_CLASSES_ROOT\Base85FileType]
@="Base-85 Encoded File"

[HKEY_CLASSES_ROOT\Base85FileType\shell]
@="decode"

[HKEY_CLASSES_ROOT\Base85FileType\shell\decode]
@="&Decode It"

[HKEY_CLASSES_ROOT\Base85FileType\shell\decode\command]
@="notepad.exe \"%1\""

但是没有出现“D͟ecode It”上下文菜单选项。我做错了什么?

研究工作

Windows 甚至无法识别文件类型描述 “Base-85 编码文件”,而是显示默认的

BASE85 File

enter image description here

我尝试过重新启动。

尝试后你会得到什么?

winapi explorer windows-shell
1个回答
0
投票

您的注册是正确的,但系统上的某些内容已经声明了该扩展名。它存储在未记录的 Explorer FileExts 键中,其中扩展名映射到其“有效”ProgID。

用户可以在“设置”应用程序中明确选择默认应用程序,或者(取决于 Windows 版本)在使用“打开方式”功能时强制选择默认应用程序。当使用“打开方式”功能设置默认值时,ProgId 通常看起来像“Applications\Example.exe”。这很可能在您的情况下,因为文件类型没有真正的描述。

系统应该足够智能,能够理解已安装的新应用程序想要与现有扩展关联,并在其“继续使用”模式下弹出一个 toast 或“打开方式”对话框(取决于Windows 版本)。对于每个扩展,每个用户可能只会发生一次,并且在开发过程中可能很容易错过。

即使查询哪个 ProgId 是“有效”默认值也很困难。在支持它的系统上,使用

ASSOCSTR_PROGID
,否则回退到
IApplicationAssociationRegistration::QueryCurrentDefault

© www.soinside.com 2019 - 2024. All rights reserved.