使用WMI得到計(jì)算機(jī)的信息
WMI是一項(xiàng)行業(yè)推薦規(guī)范,旨在為訪問(wèn)企業(yè)環(huán)境中的管理信息而開(kāi)發(fā)一種標(biāo)準(zhǔn)化技術(shù)。該信息包括系統(tǒng)內(nèi)存的狀態(tài)、當(dāng)前安裝的客戶應(yīng)用程序清單,以及有關(guān)客戶端狀態(tài)的其他數(shù)據(jù)。
WMI是可伸縮的系統(tǒng)管理結(jié)構(gòu),該規(guī)范采用一個(gè)統(tǒng)一、基于標(biāo)準(zhǔn)且可擴(kuò)展的面向?qū)ο蠼涌?。它提供與系統(tǒng)管理員信息和基礎(chǔ)WMI API交互的標(biāo)準(zhǔn)方法,主要由系統(tǒng)管理應(yīng)用程序開(kāi)發(fā)人員和系統(tǒng)管理員用來(lái)訪問(wèn)和操作系統(tǒng)管理信息。
WMI可用來(lái)生成組織和管理系統(tǒng)信息的工具,使系統(tǒng)管理人員能夠更密切的監(jiān)視系統(tǒng)活動(dòng)。
WMI提供了一套內(nèi)置在Microsoft Windows操作系統(tǒng)中的豐富的系統(tǒng)管理服務(wù),現(xiàn)在有大量的應(yīng)用程序、服務(wù)和設(shè)備用其為信息技術(shù)操作和產(chǎn)品支持組織提供全方位的管理功能。基于WMI的管理系統(tǒng)的使用帶來(lái)了更可靠的計(jì)算環(huán)境和更高的系統(tǒng)可靠性,從而節(jié)省了企業(yè)的開(kāi)銷。
WMI提供的大量的規(guī)范為許多高端應(yīng)用程序,例如Microsoft Exchange、Microsoft SQL Server和Microsoft Internet信息服務(wù)(IIS)等實(shí)現(xiàn)如下管理任務(wù)。
1. 監(jiān)視應(yīng)用程序的運(yùn)行情況
2. 檢測(cè)瓶頸或故障
3. 管理和配置應(yīng)用程序
4. 查詢應(yīng)用程序數(shù)據(jù)(使用對(duì)象關(guān)系的遍歷和查詢)
5. 執(zhí)行無(wú)縫的本地或遠(yuǎn)程管理操作
下面我們通過(guò)一個(gè)例子來(lái)說(shuō)明WMI的強(qiáng)大功能。以vb6為列:
引用”Microsoft WMI Scripting V1.1 Library”
代碼如下:
Option Explicit
Dim WithEvents Sink As SWbemSink
Dim j As Integer
'功能:利用wmi組件得到計(jì)算機(jī)的信息,每一個(gè)小功能分開(kāi)寫(xiě),便于大家查閱
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:")
'得到驅(qū)動(dòng)器的信息
On Error Resume Next
Set ObjSet = oWMINameSpace.InstancesOf("Win32_DiskDrive")
For Each Obj In ObjSet
List5.AddItem Obj.Caption & " - " & BytesToMegabytes(Obj.Size) & " GB"
Next
'得到每一個(gè)驅(qū)動(dòng)器的詳細(xì)信息
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:")
'操作系統(tǒng)
Set SystemSet = oWMINameSpace.InstancesOf("Win32_OperatingSystem")
For Each System In SystemSet
List1.AddItem System.Caption
List1.AddItem System.Manufacturer
List1.AddItem System.BuildType & “” ‘Win9x下好像取不出來(lái)
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
'內(nèi)存
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
'網(wǎng)卡
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
這篇文章就介紹到這,更多的內(nèi)容大家可以參考這篇文章:http://technet.microsoft.com/en-us/library/ee198932.aspx
- VB中使用WMI獲取系統(tǒng)硬件和軟件有關(guān)信息
- VBS調(diào)用WMI遍歷搜索硬盤(pán)文件并計(jì)數(shù)的方法
- vbs通過(guò)WMI修改文件文件夾的NTFS權(quán)限
- WMI StdRegProv 通過(guò)wmi操作注冊(cè)表的vbscript實(shí)現(xiàn)代碼 (本地或遠(yuǎn)程)
- VBS通過(guò)WMI監(jiān)視注冊(cè)表變動(dòng)的代碼
- VBS通過(guò)WMI獲取CPU使用率的代碼
- 將WMI中的DateTime類型轉(zhuǎn)換成VBS時(shí)間的函數(shù)代碼
- VBS調(diào)用WMI實(shí)現(xiàn)搜索硬盤(pán)mp3文件
- Rcmd.vbs [Remote Cmd with wmi]遠(yuǎn)程腳本
- VBS調(diào)用WMI快速關(guān)閉IE的腳本
- VBS腳本使用WMI操作注冊(cè)表的代碼
- vbs wmi獲取電腦硬件信息實(shí)例
- 初窺WMI_Vbs腳本編程簡(jiǎn)明教程補(bǔ)充讀物
相關(guān)文章
VB實(shí)現(xiàn)屏蔽文本框右鍵菜單的復(fù)制、粘貼等功能的方法
這篇文章主要介紹了VB實(shí)現(xiàn)屏蔽文本框右鍵菜單的復(fù)制、粘貼等功能,是非常實(shí)用的一個(gè)功能,需要的朋友可以參考下2014-07-07
VB簡(jiǎn)單實(shí)現(xiàn)防止文件被改寫(xiě)
這篇文章主要介紹了VB簡(jiǎn)單實(shí)現(xiàn)防止文件被改寫(xiě)的方法,十分的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下。2015-06-06
VB實(shí)現(xiàn)的《QQ美女找茬游戲》作弊器實(shí)例
這篇文章主要介紹了VB實(shí)現(xiàn)的《QQ美女找茬游戲》作弊器,以一個(gè)完整實(shí)例形式分析了VB實(shí)現(xiàn)《QQ美女找茬游戲》作弊器的相關(guān)技巧,需要的朋友可以參考下2015-06-06
VB實(shí)現(xiàn)的16位和32位md5加密代碼分享
這篇文章主要介紹了VB實(shí)現(xiàn)的16位和32位md5加密代碼分享,需要的朋友可以參考下2014-07-07
VB的32位程序在64位系統(tǒng)中出現(xiàn)文件和注冊(cè)表自動(dòng)轉(zhuǎn)向的解決方法
這篇文章主要介紹了VB的32位程序在64位系統(tǒng)中出現(xiàn)文件和注冊(cè)表自動(dòng)轉(zhuǎn)向的解決方法,需要的朋友可以參考下2014-07-07
VB實(shí)現(xiàn)鼠標(biāo)繪圖實(shí)例代碼
這篇文章主要介紹了VB實(shí)現(xiàn)鼠標(biāo)繪圖實(shí)例代碼,很實(shí)用的一個(gè)功能,需要的朋友可以參考下2014-07-07

