编译已安装软件列表时,在卸载注册表键中出现重复条目

3

我正在尝试编译工作站上安装的软件列表。经过一些研究,我决定使用以下注册表键中的信息来编译列表。

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall

它是一个很好的资源,它还列出了一些没有使用Win32_Products WMI类列出的项目。我遇到的一个怪癖是,在不同的注册表键下记录了一些具有相同显示名称的“重复”条目。例如,这是Windows Media Player的键:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Windows Media Player]
"DisplayName"="Windows Media Player 11"
"UninstallString"="\"C:\\Program Files\\Windows Media Player\\Setup_wm.exe\" /Uninstall"
"DisplayIcon"="C:\\Program Files\\Windows Media Player\\wmplayer.exe"
"ParentKeyName"=""
"ParentDisplayName"=""
"NoModify"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\wmp11]
"DisplayName"="Windows Media Player 11"
"UninstallString"="\"C:\\WINDOWS\\$NtUninstallwmp11$\\spuninst\\spuninst.exe\""
"TSAware"=dword:00000001
"NoModify"=dword:00000001
"InstallDate"="20090325"
"Publisher"="Microsoft Corporation"
"NoRepair"=dword:00000001
"HelpLink"="http:"
"URLInfoAbout"="http:"
"SystemComponent"=dword:00000001

这种情况也有类似的,还有一些条目是应用程序的GUID。我读到说这是由于应用程序和补丁部署的不同方法造成的。这是真的吗?更重要的是:

  • 这两个条目中哪个是有效的?(或者更有效?)
  • 添加/删除程序列表使用哪一个?
  • 这两个键的信息是否合并?如果是,如何合并?
  • 有其他提示/建议吗?

谢谢!

1个回答

3
我已经找到了一个答案,虽然不确定是否完全正确。其次,上述注册表键具有“SystemComponent”=dword:00000001的注册表值。该值用于从ARP(添加/删除程序)中隐藏项目。我可以忽略包含此值的任何注册表键。到目前为止,它似乎是有效的。第二个注册表键包含一些有用的信息,所以我不确定如何合并它,但是对于列表来说还可以。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接