使用WMI得到電腦的資訊

來源:互聯網
上載者:User
使用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 oWMINameSpace 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 oWMINameSpace = GetObject("winmgmts:") '得到磁碟機的資訊On Error Resume NextSet 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) = sValueNext      CleanUp:Set oLogicalDisk = NothingSet oLogicalDiskSet = NothingSet oWMINameSpace = 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 oWMINameSpace As SWbemServicesDim SystemSet As VariantDim System As VariantDim ObjSet As VariantDim 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.SerialNumberNext'cpuSet 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 SWbemServicesDim ObjSet As VariantDim Obj As VariantDim 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 = 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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.