`
yanzilee9292
  • 浏览: 538354 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

WMI 获得已安装应用程序列表

 
阅读更多

问题 13:如何列出特定计算机上已经安装的所有应用?

转载http://www.microsoft.com/china/technet/community/scriptcenter/resources/wmifaq.mspx#EXEAE

 

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 <> 0 Then
        intRet = objReg.GetStringValue(HKLM, strBaseKey & strSubKey, _
        "QuietDisplayName", strValue)
    End If
    If (strValue <> "") and (intRet = 0) Then
        WScript.Echo strValue
    End If
Next

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

分享到:
评论

相关推荐

    用WMI获取操作系统补丁信息

    在IT领域,Windows Management Instrumentation(WMI)是一个强大的工具,用于管理和监控Windows操作系统以及运行在其上的应用程序。本文将深入探讨如何利用C++通过WMI获取操作系统的补丁(hotfix)信息,同时...

    Delphi读取电脑硬件信息及安装软件列表

    1. 使用Windows Management Instrumentation (WMI)是获取已安装软件列表的常见方法。Delphi中可以使用`ComObj`单元来访问WMI服务。首先创建一个`IWbemLocator`接口实例,然后调用`ConnectServer`方法连接到本地WMI...

    wmi应用(用于获取CPUID和硬盘ID)

    综合上述信息,我们可以推断这是一个使用C++编写的Windows应用程序,其主要功能是通过WMI服务来获取CPU的CPUID和硬盘的硬盘ID。开发者可能通过调用WMI的COM接口,实例化对应的WMI类,然后执行查询操作,最后解析返回...

    WmiTools(windows系统工具)

    WMI是Windows Management Instrumentation的缩写,它是Windows操作系统中的一个标准管理架构,允许管理员和其他应用程序获取关于系统状态的信息,包括硬件、软件、网络和安全等方面的数据。WMI基于Web-Based ...

    利用WMI控制远程计算机 源码

    WMI基于Common Information Model (CIM) 标准,允许开发者编写脚本或应用程序来监控系统状态,执行配置更改,以及管理网络上的多台计算机。通过WMI,你可以获取硬件、软件、安全、性能等众多方面的信息,并进行相应...

    使用WMI获得系统信息C++源代码程序小实例

    在提供的压缩包文件"VC2010-08-25-使用WMI获得系统信息"中,可能包含了实现上述功能的源代码示例,可以下载并研究其具体实现细节。这个实例对于学习和理解如何在C++中利用WMI接口获取系统信息非常有帮助。

    易语言利用WMI取主板温度

    WMI是微软提供的一个系统管理工具,它允许应用程序访问和管理Windows系统中的硬件、软件和系统信息。通过WMI,我们可以查询到计算机的各种状态,包括硬件温度,如CPU、内存和主板等的温度数据。 在易语言中,我们...

    WMI代码生成器wmi wmi编程 wmi代码查询 wmi功能

    - 应用程序控制,如启动、结束进程,读取进程信息。 - 安全管理,获取用户和组信息,检查权限等。 总的来说,WMI编程通过提供一个统一的接口,使得开发者能以更高效的方式与Windows系统交互,而WMI代码生成器则...

    wmi系统信息读取控件

    它允许应用程序通过标准接口来查询和操作系统的各种硬件、软件和系统状态信息。Delphi是一款强大的Object Pascal集成开发环境,它可以利用WMi接口来实现对系统信息的读取。本文将深入探讨如何使用Delphi配合WMi控件...

    VB-WMI.rar_VB WMI_wmi vb

    学习如何获取硬件信息、软件列表、系统性能数据等,以及如何处理查询结果。 4. **操作WMI对象**:教程会展示如何使用VB来改变WMI对象的属性,执行方法,例如启动或停止服务、创建新用户、修改系统设置等。这通常...

    Windows Management Instrumentation(WMI):常见问题

    收集的本资料包括如下内容: 1:WMI 是什么,它能帮我做什么? 2: WMI 适用于那些平台? 3:如果 WMI 向外界暴露特定的功能,我如何...13:如何列出特定计算机上已经安装的所有应用? 14:如何获得性能计数器数据?

    使用wmi查询声音设备信息

    在Windows操作系统中,WMI(Windows Management Instrumentation)是一个强大的管理工具,允许系统管理员和开发者获取和操作系统、硬件和应用程序的各种信息。本教程将详细解释如何使用WMI查询声音设备信息。 首先...

    安装sql2008的错误

    在处理SQL Server 2008安装过程中遇到的“MOF编译器无法连接WMI服务器”的问题时,我们首先需要了解几个关键概念和技术背景,这样才能更好地定位问题并找到解决方案。 ### SQL Server 2008简介 SQL Server 2008是...

    C#、wmi 远程监控进程内存

    开发者可以利用WMI API编写应用程序,实现对远程计算机的监控和管理。 在C#中,我们通常会使用System.Management命名空间来访问WMI接口。以下是一个简单的示例,展示如何查询远程计算机上的进程信息: ```csharp ...

    WMI.rar_WMI 内存_win7 ManagementClass_wmi_wmi class windows

    WMI是基于WBEM(Web-Based Enterprise Management)标准的,允许管理员和其他应用程序通过标准接口来访问和操作系统的各种信息。在本主题中,我们将深入探讨如何使用WMI来获取关于Win7系统的信息,特别是内存相关的...

    WMI 代码生成器英文版

    它提供了一种标准的接口,允许应用程序、脚本和其他工具访问和操作系统的各种管理信息,如硬件配置、软件安装、系统事件等。 **WMI代码生成器**,正如标题所言,是一个实用工具,特别适用于开发人员和系统管理员。...

    WMI网卡原生MAC地址、硬盘序列号、主板序列号、处理器ID源代码

    在C++中,我们可以使用Microsoft的Active Template Library (ATL)或者C++的STL来编写WMI客户端应用程序。这个项目中,开发者可能使用了ATL COM库,这是一个轻量级且高效的库,特别适合创建COM组件和服务。 获取网卡...

    使用WMI得到计算机的信息

    WMI提供了丰富的系统管理服务,包括监控应用程序运行、检测系统瓶颈和故障、配置系统设置、查询数据以及执行本地和远程管理操作。这些服务不仅适用于系统管理员,也适用于开发管理应用程序的程序员。 在VB6(Visual...

    渗透基础WMI学习笔记1

    - 列出已安装的软件:`$wql = "select * from win32_product"`,`wmic product get name`。 - 检索防护软件:`wmic /namespace:\\root\securitycenter2 path antivirusproduct GET displayName`。 WMI的强大之处...

Global site tag (gtag.js) - Google Analytics