Installation 从C中的产品代码获取产品版本#

Installation 从C中的产品代码获取产品版本#,installation,windows-installer,version,Installation,Windows Installer,Version,我需要使用产品代码GUID查找已安装应用程序的产品版本。有没有办法使用某种简单的API调用来实现这一点?我已经找到了使用P/Invoke和WindowsInstaller名称空间的方法,但是我试图避免使用P/Invoke。Windows安装程序公开了您发现的Win32 API函数(P/Invoke)。它也有包装这些API的COM自动化接口,但我相信您可以猜到,这更不优雅。Windows安装程序XML(WiX)部署工具基金会(DTF)有一个MSI互操作库,它将它封装为托管代码,但我确信您可以猜出它

我需要使用产品代码GUID查找已安装应用程序的产品版本。有没有办法使用某种简单的API调用来实现这一点?我已经找到了使用P/Invoke和WindowsInstaller名称空间的方法,但是我试图避免使用P/Invoke。

Windows安装程序公开了您发现的Win32 API函数(P/Invoke)。它也有包装这些API的COM自动化接口,但我相信您可以猜到,这更不优雅。Windows安装程序XML(WiX)部署工具基金会(DTF)有一个MSI互操作库,它将它封装为托管代码,但我确信您可以猜出它在封面中所做的事情:P/INKECKE.

有很多方法可以从注册表中获取它,但这不是官方的API,在IMO中没有那么优雅


因此,为了回答您的问题,您已经在以一种非常好和专业的方式进行这项工作。

如果您想偷偷摸摸,您可以查看注册表来找出答案。安装MSI后,windows将在以下位置创建一组注册表项:
HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\

HKLM\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\
(取决于您的机器/MSI比特数)


在该注册表位置下应该有一个名为“ProductVersion”的注册表值。诀窍是知道如何“咀嚼”windows GUID(请参阅)。

这个故事的寓意是,您不应该害怕p\Invoke。它安全、简单、功能强大。