利用WMI查看系统信息

时间:2022-10-12 12:02:47

利用WMI查看系统信息

摘要:获取系统信息的方法是调用API函数来实现,通过WMI编程,在VB环境中实现查看系统信息的功能。

关键词:WMI;VB;系统信息

中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)34-1668-02

Showing System Information with WMI

SU Ying, ZHANG Yue-hua

(Taiyuan University of Technology Yangquan College, Yangquan 045000, China)

Abstract: Method of Getting the system information is that callingthe API functions to realize, through WMI programming, get the system information in VB.

Key words: WMI; VB; system information

1 WMI

1.1 WMI简介

WMI是Windows管理规范(Windows Management Instrumentation[1]),是Microsoft基于Web的企业管理(WBEM)[2]的实现,是一项行业推荐规范,是为访问企业环境中的管理信息而开发一种标准化技术。

WMI是可伸缩的系统管理结构,该规范采用一个统一、基于标准且可扩展的面向对象接口。它提供与系统管理员信息和基础WMI API交互的标准方法,主要由系统管理应用程序开发人员和系统管理员用来访问和操作系统管理信息。WMI提供了一套内置在Microsoft Windows操作系统中的丰富的系统管理服务,从Windows 2000开始,WMI(Windows 管理规范)就内置于操作系统中,并且成为了Windows系统管理的重要组成部分。

1.2 WMI的主要功能

1) 访问本地主机的一些信息和服务,通过WMI 可以获取主板、BIOS、磁盘、显卡、声卡、内存、操作系统、网络等几乎所有的系统信息;

2) 获取远程计算机信息和实现使用WMI远程控制计算机[3],可以管理远程计算机,比如:重启,关机,关闭进程,创建进程,IP地址自动更改[4],对服务器硬盘资源进行实时监视和自动化管理[5]等。

2 查看WMI各分类的属性、方法

1) 利用wbemtest[6]在进行wmi编程的时候,要想得到相应的信息类型的属性,一种方法是通过查询,另外一种方法是通过在Windows环境中,单击“开始”->“运行”,在弹出的“运行”对话框中输入“wbemtest”命令,单击“确定”按钮,即打开了“Windows管理规范测试器”,刚开始默认的名称空间为“root\default”,当需要更改名称空间,单击“连接”按钮,将默认的“root\default”更改为“root\cimv2”,单击“连接”。可以单击“打开类别”,在弹出的对话框中输入要查找的类名(例如Win32_Processor)就可以查询类的属性和方法。

2) 利用Internet上的MSDN来查看WMI各分类的属性、方法。

3 WMI在VB中的应用

下面是在VB中调用WMI来进行CPU、声卡、显卡检测。

1) 首先打开VB环境,单击先“工程”->“引用”[7],在弹出的“引用”对话框中,选中左侧列表框中的“Microsoft WMI Scripting V1.1 Library”选项。

2) 在窗体Form1中加入一个TextBox和CommandButton。在Command1.click中加入以下代码:

'CPU检测

Dim wmiObjSet As SWbemObjectSet

Dim obj As SWbemObject

Set wmiObjSet = GetObject("winmgmts:_{impersonation Level=impersonate}").

_InstancesOf("Win32_Processor")

For Each obj In wmiObjSet

Text1.Text = "CPU信息:" & vbCrLf

Text1.Text = Text1.Text & "【CPU类型】" & obj.Name & vbCrLf

Text1.Text = Text1.Text & "【封装类型】:" & obj.SocketDesignation & vbCrLf

Next

'声卡检测

Set wmiObjSet = GetObject("winmgmts:_{impersonation Level=impersonate}").

_InstancesOf("Win32_SoundDevice")

For Each obj In wmiObjSet

Text1.Text = Text1.Text & "声卡信息:" & vbCrLf

Text1.Text = Text1.Text & "【声卡】:" & obj.ProductName & vbCrLf

Next

'显卡检测

Set wmiObjSet = GetObject("winmgmts:_{impersonation Level=impersonate}").

_InstancesOf("Win32_VideoController")

For Each obj In wmiObjSet

Text1.Text = Text1.Text & " 显卡信息:" & vbCrLf

Text1.Text = Text1.Text & "【显卡】:" & obj.Name

Next

'操作系统

Set wmiObjSet = GetObject("winmgmts:_{impersonation Level=impersonate}").

_InstancesOf("Win32_ OperatingSystem")

For Each obj In wmiObjSet

Text1.Text = Text1.Text & " 操作系统信息:" & vbCrLf

Text1.Text = Text1.Text & "【操作系统】:" & obj.Caption & vbCrLf

Next

从以上的程序代码中可以看出,使用WMI对信息的提取都是使用了WIN32_类库名,以下是系统常用信息的类库名。

Win32_BIOSWin32_Keyboard

Win32_MotherboardDevice Win32_NetworkAdapter

Win32_PhysicalMemoryWin32_Processor

Win32_SoundDeviceWin32_VideoController

Win32_ OperatingSystem

4 结论

在VB中使用WMI获得系统信息的方法是比较简单和容易实现的,而且在VB中也可以采用相应API函数[8]来获得系统信息,将两者结合起来会得到更好的效果。

参考文献:

[1] Microsoft.Windows Management Instrumentation[EB/OL].[2008-08-11]./_en-us/library//aa394582(VS.85).aspx.

[2] 姜劲松,吴礼发,张萍.基于WMI的系统管理的设计与实现[J].计算机应用,2004,24(3):16-18.

[3] 宋昕.WMI在计算机管理中的应用研究[J].电脑知识与技术,2008(11):370-371.

[4] 任映雪.基于WMI的脚本编程在机房维护管理中的应用[J].实验科学与技术,2007,5(1):120-123.

[5] 张施展,高景昌.基于WMI技术的计算机自动化管理[J].吉林大学学报:信息科学版,2006,24(4):451-456.

[6] 沼泽.初窥WMI[J].黑客防线,2005(6):106-111.

[7] 四维科技,赵斯思.Visual Basic数据库编程技术与实例[M].北京:人民邮电出版社,2004:40.

[8] 求是科技,刘韬,骆娟.Visual Basic实效编程百例[M].2版.北京:人民邮电出版社,2004:107-110.

上一篇:基于B/S模式的图书管理信息系统的设计 下一篇:基于OWC的在线成绩分析系统的设计与实现