我遇到了这个问题。 我必须在Windows操作系统(包括x86和x64)上列出所有已安装的程序,包括Internet Explorer和其他Windows组件。
我尝试了一些解决方案:
将WMI与查询"SELECT * FROM Win32_Product"
一起使用,但结果没有Internet Explorer,而在x64上,它不会列出所有程序。
阅读注册表:我尝试在x86上阅读:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
,但未列出IE。
总结,我需要在x86和x64操作系统上列出所有已安装的程序和Windows组件(如IE)。
任何人都可以帮助我吗? 非常感谢你。
答案 0 :(得分: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