使用WMI得到计算机的信息

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

使用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 ExplicitDim WithEvents Sink As SWbemSinkDim j As Integer'功能:利用 WMI组件 得到计算机信息,每一个小功能分开写,便于大家查阅 Private Sub cmdDone_Click()Dim o WMINameSpace As SWbemServicesDim oLogicalDiskSet As SWbemObjectSetDim oLogicalDisk As SWbemObject Dim ObjSet As VariantDim sDrive As StringDim sValue As StringDim dblSize As DoubleDim Obj As Variant Dim lIndex As Long Set o WMINameSpace = GetObject("winmgmts:") '得到驱动器的 信息On Error Resume NextSet ObjSet = o WMINameSpace.InstancesOf("Win32_DiskDrive") For Each Obj In ObjSet  List5.AddItem Obj.Caption & " - " & BytesToMegabytes(Obj.Size) & " GB"Next  '得到每一个驱动器的详细 信息On Error GoTo ErrorHandler'Set o WMINameSpace = GetObject("winmgmts:")Set oLogicalDiskSet = o WMINameSpace.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) = sValueNext      CleanUp:Set oLogicalDisk = NothingSet oLogicalDiskSet = NothingSet o WMINameSpace = NothingExit Sub ErrorHandler:MsgBox "" & Err.Description GoTo CleanUp End Sub Private Sub Command1_Click()Unload MeEnd 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 o WMINameSpace As SWbemServicesDim SystemSet As VariantDim System As VariantDim ObjSet As VariantDim Obj As Variant  Set o WMINameSpace = GetObject("winmgmts:")'操作系统Set SystemSet = o WMINameSpace.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.SerialNumberNext'cpuSet ObjSet = o WMINameSpace.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 o WMINameSpace As SWbemServicesDim ObjSet As VariantDim Obj As VariantDim Adapter As Variant '内存Set o WMINameSpace = GetObject("winmgmts:")Set ObjSet = o WMINameSpace.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 = 0End 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 + 1End Sub 当执行后,出现如下所示: 是不是感到了 WMI功能的强大。(完)注明:Windows2000/XP已经安装了 WMI。Win98默认不支持,需要安装 WMI For Win9x驱动。下载地址:http://www.microsoft.com/downloads/details.aspx?FamilyID=98a4c5ba-337b-4e92-8c18-a63847760ea5&DisplayLang=en <script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值