4

我遇到了这个问题。我必须列出 Windows 操作系统(x86 和 x64)上所有已安装的程序,包括 Internet Explorer 和其他 Windows 组件。

我尝试了一些解决方案:

  1. 将 WMI 与 query 一起使用"SELECT * FROM Win32_Product",但结果没有 Internet Explorer,并且在 x64 上,它没有列出所有程序。

  2. 读取注册表:我尝试读取:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall在 x86 上,但未列出 IE。

总结,我需要列出 x86 和 x64 操作系统上所有已安装的程序和 Windows 组件(如 IE)。

谁能帮我?非常感谢。

4

1 回答 1

1

试试这个 WMI 查询脚本,看看它是否也缺少您的 x64 内容。如果没有,则在 x64 命令 shell 下重试。我怀疑您正在以 32 位模式执行程序:

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.CreateTextFile("c:\scripts\software.tsv", True)
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
 & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colSoftware = objWMIService.ExecQuery _
 ("SELECT * FROM Win32_Product")
objTextFile.WriteLine "Caption" & vbtab & _
"Description" & vbtab & "Identifying Number" & vbtab & _
"Install Date" & vbtab & "Install Location" & vbtab & _
"Install State" & vbtab & "Name" & vbtab & _
"Package Cache" & vbtab & "SKU Number" & vbtab & "Vendor" & vbtab _
 & "Version"
For Each objSoftware in colSoftware
 objTextFile.WriteLine objSoftware.Caption & vbtab & _
 objSoftware.Description & vbtab & _
 objSoftware.IdentifyingNumber & vbtab & _
 objSoftware.InstallLocation & vbtab & _
 objSoftware.InstallState & vbtab & _
 objSoftware.Name & vbtab & _
 objSoftware.PackageCache & vbtab & _
 objSoftware.SKUNumber & vbtab & _
 objSoftware.Vendor & vbtab & _
 objSoftware.Version
Next
objTextFile.Close

来源: 枚举已安装的软件

于 2013-04-14T11:15:58.257 回答