在Windows中列出已安装的程序

时间:2010-11-27 10:42:04

标签: c++ windows

我想获得一个Windows中独特安装程序的列表,比如在windows中的“添加/删除程序”。但HKLM \ Software \ Microsoft \ Windows \ Current Version \ Uninstall中的数据, 有一些重复。我该如何过滤它们?

感谢

2 个答案:

答案 0 :(得分:2)

推荐的Win32方法是使用Microsoft Installer API。您想要的功能是MsiEnumProductsEx

答案 1 :(得分:0)

我使用Win32_Product表的'GetWmiObject'查询遇到的问题是,它希望已安装的程序使用标准的uuid密钥名称,并且我发现并非所有供应商都以此方式命名其注册表项。

在powershell中,我这样做是为了扫描所有键,而不管名称如何

$reg = Get-ChildItem "HKLM:SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" -Recurse
foreach ($a in $reg) {
    if ($a.GetValue("Publisher") -eq 'Publisher_Name') {
      Write-Output $a.GetValue("DisplayVersion")
    }
}