【发布时间】:2010-11-27 10:42:04
【问题描述】:
我想获取 Windows 中唯一已安装程序的列表,例如 Windows 中的“添加/删除程序”。但是 HKLM\Software\Microsoft\Windows\Current Version\Uninstall 的数据, 有一些重复。如何过滤它们?
谢谢
【问题讨论】:
-
我说对了吗?如果您不喜欢编辑,请回滚。
我想获取 Windows 中唯一已安装程序的列表,例如 Windows 中的“添加/删除程序”。但是 HKLM\Software\Microsoft\Windows\Current Version\Uninstall 的数据, 有一些重复。如何过滤它们?
谢谢
【问题讨论】:
推荐的 Win32 方法是使用 Microsoft Installer API。你要的函数是MsiEnumProductsEx。
【讨论】:
我在使用 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")
}
}
【讨论】: