我知道所有已安装的程序和更新都可以在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
找到
注册表中的密钥。
但是,如何区分已安装的程序和已安装的更新?
我相信更新的值(默认值)通常以KB开头。真正的安装将具有DisplayName。另外,我会忽略SystemComponent设置为1的事情。
调用MsiEnumProducts()将为您提供系统上所有已安装产品的产品代码。对于每个已安装的产品,调用MsiGetProductInfo()将为您提供有关该产品的信息。
这是比使用基于注册表的解决方案更直接的解决方案。
This应该是一个很好的起点:
我相信你可以从c#调用c ++函数。