确定与 URI 方案关联的默认图标

Determine default icon associated with an URI scheme

我找到了 register an application to an URI scheme 的方法。此处的示例显示了假设的 alert 协议的以下注册表结构:

HKEY_CLASSES_ROOT
   alert
      (Default) = "URL:Alert Protocol"
      URL Protocol = ""
      DefaultIcon
         (Default) = "alert.exe,1"
      shell
         open
            command
               (Default) = "C:\Program Files\Alert\alert.exe" "%1"

有一个 DefaultIcon 条目,我想针对给定的 URI 方案查询它。但是,我发现没有 API 支持这一点。

如果我得到一个 URI 作为字符串,我如何在 Win32 中找到关联的默认图标,而不是自己走注册表?

SHGetFileInfo() API 适用于文件扩展名(使用 SHGFI_USEFILEATTRIBUTES 标志),但它似乎不适用于协议。结束了注册表。