WMI 获得已安装应用程序列表   Win32_Product WMI 类代表通过 Windows Installer 安装的所有应用程序。

2017年6月29日 1点热度 0条评论 来源: 零点零一

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

    原文作者:零点零一
    原文地址: https://blog.csdn.net/thanklife/article/details/73868251
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。