我正在尝试将所有已安装的应用程序都安装在我的域中的计算机中,但我还没有找到一种方法来以一种准确的方式获取这些信息--首先,我试图通过注册表项来实现这个目标:
HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*
但这返回了更多的信息,比我需要的更新安装。所以我搜索了另一种方法,我发现wmi类Win32_product
包含所有已安装的应用程序,但是经过尝试,y发现恢复的信息是不正确的。
为什么有一些应用程序,如谷歌铬,免费代理,戴尔系统诊断,没有出现在查询类?
In this link is the answer for this question
使用powershell,获得与添加/删除程序完全相同的应用程序列表
“有一种方法可以通过powershell或命令行精确地获取windows中所有已安装的应用程序吗?
发布于 2015-12-22 20:04:21
WMI类Win32_Product
使用MSI提供程序来收集已安装的程序数据。这意味着您将只获得使用MSI安装的软件/软件包的数据。此外,调用这个类会在它返回的每个程序上执行一个修复操作。大多数情况下,这不是一个问题,但它将填补事件日志,并可能导致一些软件的问题。您可以获得有关此链接的更多细节:Win32_产品类别
大多数脚本编写者、编码器等都使用以下两种方法之一: 1)注册表查询,2) SCCM类SMS_InstalledSoftware
的WMI查询。显然,SCCM类要求在主机上安装SCCM。您可以阅读更多关于该这里的内容。因此,这实际上只剩下了对大多数文件夹的注册表查询。不过,别担心,因为所有的工作都是由TSG为你做的。
你的金锅是"使用PowerShell快速查找已安装软件“
虽然我所做的事情与那篇文章略有不同,但它已经写好了所有的重担。有了一点才能和谷歌搜索,你可以定制你想要的。
发布于 2015-12-21 05:42:36
我不确定您是否有意忽略64位软件,但请记住,该软件\Wow6432Node只适用于运行在64位计算机上的32位软件。你也有HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\
如果你想要所有的软件,你需要聚合一些方法/资源。如果不是全部的话,这两把钥匙应该是最多的。您还必须考虑HKEY_USERS每个用户\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\及其Wow6432Node对应项。像DropBox这样的应用程序,有时是google,还有一些其他的应用程序只安装在用户环境中。我怀疑这也是为什么Win32_Product没有这些特定包的原因。
为了过滤聚合列表,没有一种简单的方法。您可以排除那些具有密钥System=1或Publisher=“”的用户(重复检查密钥名称,我可能记错了)。不过,这些密钥也用于一些非必要的软件中。
发布于 2015-12-21 06:40:15
Wmic
可能为此提供有用的工具。例如:wmic product get Name, Version
。
C:\Windows\System32>wmic product get Name, Version
Name Version
Windows 7 USB/DVD Download Tool 1.0.30
Microsoft Office OneNote MUI (English) 2010 14.0.70
...
Oracle VM VirtualBox 5.0.10 5.0.10
注意,此命令可能无法列出一些已安装的程序。对我来说,在Windows 7
上,它没有看到安装了Opera
。
还有许多设置输出格式的选项:http://www.pearsonitcertification.com/articles/article.aspx?p=1700427&seqNum=4
https://serverfault.com/questions/744388
复制相似问题