WMI 获得已安装应用程序列表 Win32_Product WMI 类代表通过 Windows Installer 安装的所有应用程序。
2017-06-29 10:07
1136 查看
WMI 获得已安装应用程序列表
Win32_Product WMI 类代表通过 Windows Installer 安装的所有应用程序。但是,这个 WMI 类可能不会列出所有出现在‘添加/删除程序’中的程序。 解决该问题的一种方法是从注册表中搜集已安装程序的信息(注意:并不是所有程序在安装的时候都会向注册表写入信息)。本主题给出了达到此目的的两种方法:使用脚本直接读取注册表中的信息,使用 MOF 文件和脚本从 WMI
中获取该信息。
Win32_Product WMI 类代表通过 Windows Installer 安装的所有应用程序。但是,这个 WMI 类可能不会列出所有出现在‘添加/删除程序’中的程序。 解决该问题的一种方法是从注册表中搜集已安装程序的信息(注意:并不是所有程序在安装的时候都会向注册表写入信息)。本主题给出了达到此目的的两种方法:使用脚本直接读取注册表中的信息,使用 MOF 文件和脚本从 WMI
中获取该信息。
1. | 以下脚本用于列出计算机上已经安装的应用程序。使用 WMI System Registry Provider 直接从注册表中搜集信息的脚本: strHost = "." Const HKLM = &H80000002 Set objReg = GetObject("winmgmts://" & strHost & _ "/root/default:StdRegProv") Const strBaseKey = _ "Software\Microsoft\Windows\CurrentVersion\Uninstall\" objReg.EnumKey HKLM, strBaseKey, arrSubKeys For Each strSubKey In arrSubKeys intRet = objReg.GetStringValue(HKLM, strBaseKey & strSubKey, _ "DisplayName", strValue) If intRet $amp;<amp;$gt; 0="" then="" intret="objReg.GetStringValue(HKLM," strbasekey="" &="" strsubkey,="" _="" "quietdisplayname",="" strvalue)="" end="" if="" (strvalue="" $amp;<amp;$gt;="" "")="" and="" (intret="0)" wscript.echo="" strvalue="" next="" <="" p="" style="margin: 0px; padding: 0px; list-style: none;"> |
2. | 以下 MOF 文件和它的配套脚本展示了另外一种从注册表中获取已安装应用的方法。如果使用 MOF 文件,请按以下步骤操作: 步骤 1:复制以下 MOF 语法到记事本并保存为一个 .MOF 文件(例如 products.mof)。 qualifier dynamic:ToInstance; qualifier ProviderClsid:ToInstance; qualifier ClassContext:ToInstance; qualifier propertycontext:ToInstance; [dynamic, provider("RegProv"), ProviderClsid("{fe9af5c0-d3b6-11ce-a5b6-00aa00680c3f}"), ClassContext ("local|HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall") ] class Products { [key] string KeyName; [read, propertycontext("DisplayName")] string DisplayName; [read, propertycontext("DisplayVersion")] string DisplayVersion; [read, propertycontext("InstallLocation")] string InstallLocation; }; 步骤 2:在命令提示行键入 mofcomp products.mof.该命令将 MOF 文件存入 WMI 存储库。 步骤 3:MOF 存入存储库之后,使用以下脚本获取数据。 strComputer = "." Set WMI = GetObject("winmgmts:\\" & strComputer & _ "\root\default") Set colItems = WMI.ExecQuery("Select * from Products") For Each objItem In colItems WScript.Echo "DisplayName: " & objItem.DisplayName WScript.Echo "DisplayVersion: " & objItem.DisplayVersion WScript.Echo "InstallLocation: " & objItem.InstallLocation WScript.Echo "KeyName: " & objItem.KeyName Next |
相关文章推荐
- java通过反射+javassist获得方法所有信息(返回值、方法名、参数类型列表、参数列表)
- iOS 获取安装应用程序列表和所有 url scheme
- android获得已安装应用程序列表
- android获得所有的安装app列表,并运行指定app
- android获得已安装应用程序列表
- AutoIt:应用WMI接口,打印远程机器安装的所有应用程序
- 安卓获得已安装的应用程序列表
- [zz]通过win32扩展接口使用 Python获得系统进程列表的方法
- [小代码]获得已安装应用程序的列表
- 获得所有安装在手机上的应用程序的数据
- vbs 通过 WMI 得到进程列表及其它相关信息
- 通过WMI获得硬盘和CPU的物理序列号(VB.net)
- 通过ManagementClass 获得显卡的一些基本信息(Win32_VideoController )
- 虚拟主机中,如何知道服务器上已安装的所有字体的列表?
- C#通过Win32 API操作IE浏览器 --- 获得IE的URL
- symbian 获得终端安装程序列表
- 在Vista操作系统中通过manifest文件使VC应用程序获得管理员权限
- 获得上传图片的宽和高和文件夹的列表(所有文件)
- 如何通过代码获得应用程序主窗口的 指针?
- 让所有的vol xp通过正版认证!【微软正版认证、OGA、MU、Wu 插件离线安装包】