有各种方法可以在系统上找到已安装的应用程序,但据我所知,没有一个返回与控制面板项完全相同的列表,添加删除程序。我尝试过的一些方法是:
例如,我在AR中有217条条目,
gwmi Win32_Product返回261项。
gp HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*, HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | ? {![string]::IsNullOrWhiteSpace($_.DisplayName) } | select DisplayName返回119项。
(gwmi Win32Reg_AddRemovePrograms) + (gwmi Win32Reg_AddRemovePrograms64) | sort DisplayName -Unique 返回107项。
我试图用更复杂的过滤器(包括InstallLocation、InstallSource、InstallDate等)来固定它,但没有成功。
发布于 2015-05-20 13:24:04
对我来说,这是一个不幸的康韦定律案例。Windows是一个非常复杂的操作系统,有着几十年的历史和大量的移动部件。这意味着一些看起来很简单的事情,比如问“如果所有的东西都安装在我的电脑上?”不幸的是变得非常复杂。使“已安装软件”变得复杂的是,它来自几个不同的来源。有64位软件,32位软件,只为特定用户安装的软件,为所有用户安装的软件,以及通过组策略安装或分配给您的软件,等等。
幸运的是,赛斯内公司流程监控器可以向您展示所有这些信息。只需启动它,监视注册表事件,然后自己单击Add/Remove程序控制面板applet,然后查看Windows在后台正在做什么。
它来自许多不同的来源:
HKLM\Software\Installer\Products
HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall
HKLM\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall
HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\...
HKCU\Software\Microsoft\Windows\CurrentVersion\Installer\Managed\...
HKCU\Software\Microsoft\Installer\Products
HKLM\Software\Microsoft\Windows\CurrentVersion\Group Policy\AppMgmt
HKLM\Software\Microsoft\Windows\CurrentVersion\Installer\UserData\...还有更多!
一方面,要准确地重新构建“添加/删除程序”中所看到的内容,这是一个基于当前登录用户的“视图”,这是可能的。另一方面,我认为您很快就会意识到,这是一项很大的工作,可能重构添加/删除程序的确切视图对您来说一开始就不那么重要。:)
https://serverfault.com/questions/693264
复制相似问题