WMI를 사용하여 컴퓨터 정보 얻기

5863 단어 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
이 글은 여기까지 소개합니다. 더 많은 내용은 이 글을 참고하십시오http://technet.microsoft.com/en-us/library/ee198932.aspx

좋은 웹페이지 즐겨찾기