如何通过命令获取已安装应用程序的 ProgID?

How to get the ProgID of an installed application by a command?

有些应用程序不是按名称而是按 ProgID 显示的,有什么方法可以在注册表中获取该键的名称?

https://docs.microsoft.com/en-us/windows/win32/com/-progid--key

Microsoft 建议 ISV 以 Company.AppnameCompany.Appname.Suffix 的形式创建 progid,但这无关紧要,因为您感兴趣的卸载密钥名称实际上根本不是 progid! file/protocol 协会和 COM 使用 Progids。某些浏览器使用 Appname.Hash,其中哈希值由 hashing the path.

计算得出

卸载密钥名称可以是任何名称(但希望不会与其他任何人冲突)。 MSI 安装程序使用 GUID(此 GUID 映射到与 MSI 相关的内容,the product code)。其他安装程序经常使用应用程序名称的一些变体。

您应该枚举所有卸载注册表项,并将项名称的开头与您感兴趣的任何应用程序进行比较 and/or 查看卸载项中的字符串(如 DisplayName、Publisher 和 UninstallString)。

Powershell 知道如何映射 MSI GUID:

get-wmiobject Win32_Product | Format-Table IdentifyingNumber, Name