分享
 
 
 

使用WMI得到计算机的信息

王朝vb·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

使用WMI得到计算机的信息

WMI是一项行业推荐规范,旨在为访问企业环境中的管理信息而开发一种标准化技术。该信息包括系统内存的状态、当前安装的客户应用程序清单,以及有关客户端状态的其他数据。

WMI是可伸缩的系统管理结构,该规范采用一个统一、基于标准且可扩展的面向对象接口。它提供与系统管理员信息和基础WMI API交互的标准方法,主要由系统管理应用程序开发人员和系统管理员用来访问和操作系统管理信息。

WMI可用来生成组织和管理系统信息的工具,使系统管理人员能够更密切的监视系统活动。

WMI提供了一套内置在Microsoft Windows操作系统中的丰富的系统管理服务,现在有大量的应用程序、服务和设备用其为信息技术操作和产品支持组织提供全方位的管理功能。基于WMI的管理系统的使用带来了更可靠的计算环境和更高的系统可靠性,从而节省了企业的开销。

WMI提供的大量的规范为许多高端应用程序,例如Microsoft Exchange、Microsoft SQL Server和Microsoft Internet信息服务(IIS)等实现如下管理任务。

1. 监视应用程序的运行情况

2. 检测瓶颈或故障

3. 管理和配置应用程序

4. 查询应用程序数据(使用对象关系的遍历和查询)

5. 执行无缝的本地或远程管理操作

下面我们通过一个例子来说明WMI的强大功能。以vb6为列:

引用”Microsoft WMI Scripting V1.1 Library”

代码如下:

Option Explicit

Dim WithEvents Sink As SWbemSink

Dim j As Integer

'功能:利用wmi组件得到计算机的信息,每一个小功能分开写,便于大家查阅

Private Sub cmdDone_Click()

Dim oWMINameSpace As SWbemServices

Dim oLogicalDiskSet As SWbemObjectSet

Dim oLogicalDisk As SWbemObject

Dim ObjSet As Variant

Dim sDrive As String

Dim sValue As String

Dim dblSize As Double

Dim Obj As Variant

Dim lIndex As Long

Set oWMINameSpace = GetObject("winmgmts:")

'得到驱动器的信息

On Error Resume Next

Set ObjSet = oWMINameSpace.InstancesOf("Win32_DiskDrive")

For Each Obj In ObjSet

List5.AddItem Obj.Caption & " - " & BytesToMegabytes(Obj.Size) & " GB"

Next

'得到每一个驱动器的详细信息

On Error GoTo ErrorHandler

'Set oWMINameSpace = GetObject("winmgmts:")

Set oLogicalDiskSet = oWMINameSpace.InstancesOf("Win32_LogicalDisk")

For Each oLogicalDisk In oLogicalDiskSet

On Error Resume Next

sDrive = oLogicalDisk.deviceid

ListView1.ListItems.Add , , sDrive

lIndex = ListView1.ListItems.Count

sValue = oLogicalDisk.Description & ""

ListView1.ListItems(lIndex).SubItems(1) = sValue

sValue = oLogicalDisk.FileSystem & ""

ListView1.ListItems(lIndex).SubItems(2) = sValue

sValue = oLogicalDisk.VolumeName & ""

ListView1.ListItems(lIndex).SubItems(3) = sValue

sValue = oLogicalDisk.VolumeSerialNumber & ""

ListView1.ListItems(lIndex).SubItems(4) = sValue

sValue = oLogicalDisk.Size & ""

If IsNumeric(sValue) Then

dblSize = BytesToMegabytes(CDbl(sValue))

sValue = CStr(dblSize) & " MB"

End If

ListView1.ListItems(lIndex).SubItems(5) = sValue

Next

CleanUp:

Set oLogicalDisk = Nothing

Set oLogicalDiskSet = Nothing

Set oWMINameSpace = Nothing

Exit Sub

ErrorHandler:

MsgBox "" & Err.Description

GoTo CleanUp

End Sub

Private Sub Command1_Click()

Unload Me

End Sub

Private Function BytesToMegabytes(Bytes As Double) As Double

Dim dblAns As Double

dblAns = (Bytes / 1024) / 1024

BytesToMegabytes = Format(dblAns, "###,###,##0.00")

End Function

Private Sub Command2_Click()

Dim oWMINameSpace As SWbemServices

Dim SystemSet As Variant

Dim System As Variant

Dim ObjSet As Variant

Dim Obj As Variant

Set oWMINameSpace = GetObject("winmgmts:")

'操作系统

Set SystemSet = oWMINameSpace.InstancesOf("Win32_OperatingSystem")

For Each System In SystemSet

List1.AddItem System.Caption

List1.AddItem System.Manufacturer

List1.AddItem System.BuildType & “” ‘Win9x下好像取不出来

List1.AddItem System.Version

List1.AddItem System.SerialNumber

Next

'cpu

Set ObjSet = oWMINameSpace.InstancesOf("Win32_Processor")

For Each Obj In ObjSet

List2.AddItem Obj.Caption

List2.AddItem Obj.currentclockspeed & " Mhz"

Next

End Sub

Private Sub Command3_Click()

Dim oWMINameSpace As SWbemServices

Dim ObjSet As Variant

Dim Obj As Variant

Dim Adapter As Variant

'内存

Set oWMINameSpace = GetObject("winmgmts:")

Set ObjSet = oWMINameSpace.InstancesOf("Win32_PhysicalMemory")

Dim i As String

For Each Obj In ObjSet

List3.AddItem BytesToMegabytes(Obj.capacity) & " MB" & " Chip"

Next

'网卡

Set Sink = New SWbemSink

Set Adapter = GetObject("winmgmts:")

Adapter.InstancesOfAsync Sink, "Win32_NetworkAdapter"

End Sub

Private Sub Form_Load()

j = 0

End Sub

Private Sub Sink_OnObjectReady(ByVal objWbemObject As WbemScripting.ISWbemObject, ByVal objWbemAsyncContext As WbemScripting.ISWbemNamedValueSet)

Dim Adapter As Variant

‘得到所有的适配器信息

Set Adapter = GetObject("winmgmts:Win32_NetworkAdapterConfiguration=" & j & "")

List4.AddItem Adapter.Description

If IsNull(Adapter.MACAddress) Then

List4.AddItem "No MAC Address"

List4.AddItem ""

Else

List4.AddItem "Mac: " & Adapter.MACAddress

List4.AddItem ""

End If

j = j + 1

End Sub

当执行后,出现如下所示:

是不是感到了WMI功能的强大。(完)

注明:Windows2000/XP已经安装了WMI。Win98默认不支持,需要安装WMI For Win9x驱动。下载地址:

http://www.microsoft.com/downloads/details.aspx?FamilyID=98a4c5ba-337b-4e92-8c18-a63847760ea5&DisplayLang=en

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有