VisualBasic缂栫▼璁块棶WMI瀵硅薄
鍙戝竷: 2008-7-15 14:40 | 浣滆: 缃戠粶杞浇 | 鏉ユ簮: 缃戠粶杞浇 | 鏌ョ湅: 12娆
銆銆WMI(Windows Management Instrumentation)鎶鏈槸寰蒋鎻愪緵鐨刉indows涓嬬殑绯荤粺绠$悊宸ュ叿銆傞氳繃璇ュ伐鍏峰彲浠ュ湪鏈湴鎴栬呯鐞嗗鎴风绯荤粺涓嚑涔庝竴鍒囩殑淇℃伅銆傚緢澶氫笓涓氱殑缃戠粶绠$悊宸ュ叿閮芥槸鍩轰簬WMI寮鍙戠殑銆傝宸ュ叿鍦╓in2000浠ュ強WinNT涓嬫槸鏍囧噯宸ュ叿锛屽湪Win9X涓嬫槸鎵╁睍瀹夎閫夐」銆傛湰鏂囧皢浠嬬粛濡備綍閫氳繃VB缂栫▼鏉ヨ闂甒MI瀵硅薄鐨勭紪绋嬨
銆銆棣栧厛鏉ョ湅涓涓畝鍗曠殑閫氳繃WMI鑾峰彇绯荤粺淇℃伅鐨勮寖渚嬶紝杩欎釜鑼冧緥閫氳繃WMI瀵硅薄鑾峰緱绯荤粺涓繍琛岀殑鐨勮繘绋嬶細
Function Enum1() As String
銆Dim WMI
銆Set WMI = GetObject("WinMgmts:")
銆Set objs = WMI.InstancesOf("Win32_Process")
銆For Each obj In objs
銆銆Enum1 = Enum1 + obj.Description + Chr(13) + Chr(10)
銆Next
End Function
銆銆鍦ㄤ笂闈㈢殑浠g爜涓紝棣栧厛閫氳繃 GetObject("WinMgmts:")鑾峰緱WMI瀵硅薄锛屽湪WMI瀵硅薄涓嬫湁寰堝鐨勫瓙椤癸紝鍦ㄨ繖閲屾垜浠氳繃WMI.InstancesOf("Win32_Process")鑾峰緱绯荤粺涓墍鏈夌殑杩涚▼鍒楄〃瀛愰」銆
銆銆涓嬮潰鐪嬩竴涓畬鏁寸殑璁块棶WMI瀵硅薄鐨勮寖渚嬶紝杩欎釜鑼冧緥鑾峰緱璁$畻鏈虹殑淇℃伅銆
銆銆寤虹珛涓涓柊宸ョ▼锛屽湪Form1涓坊鍔犱竴涓猅extBox鎺т欢浠ュ強涓涓狢ommandButton鎺т欢锛屽湪CommandButton鐨凜lick浜嬩欢涓啓鍏ヤ互涓嬬殑浠g爜锛
Private Sub Command1_Click()
銆Dim s, System, item
銆Dim i As Integer
銆Set System = GetObject("winmgmts:").InstancesOf("Win32_ComputerSystem")
銆For Each item In System
銆銆鈥楲ist1.AddItem item.cputype
銆銆s = "Computer Info" & vbCrLf
銆銆s = s & "***********************" & vbCrLf
銆銆s = s & "璁$畻鏈哄悕绉: " & item.name & vbCrLf
銆銆s = s & "鐘舵: " & item.Status & vbCrLf
銆銆s = s & "绫诲瀷: " & item.SystemType & vbCrLf
銆銆s = s & "鐢熶骇鍘傚: " & item.Manufacturer & vbCrLf
銆銆s = s & "鍨嬪彿: " & item.Model & vbCrLf
銆銆s = s & "鍐呭瓨: ~" & item.totalPhysicalMemory \ 1024000 & "mb" & vbCrLf
銆銆s = s & "鍩: " & item.domain & vbCrLf
銆銆鈥榮 = s & "宸ヤ綔缁" & item.Workgroup & vbCrLf 鈥樿幏寰楀伐浣滅粍鍜屽煙鐨勯夐」涓嶈兘鍚屾椂鐢
銆銆s = s & "褰撳墠鐢ㄦ埛: " & item.username & vbCrLf
銆銆s = s & "鍚姩鐘舵" & item.BootupState & vbCrLf
銆銆s = s & "璇ヨ绠楁満灞炰簬" & item.PrimaryOwnerName & vbCrLf
銆銆s = s & "绯荤粺绫诲瀷" & item.CreationClassName & vbCrLf
銆銆s = s & "璁$畻鏈虹被绫诲瀷" & item.Description & vbCrLf
銆銆For i = 0 To 1 鈥樿繖閲屽亣璁惧畨瑁呬簡涓や釜绯荤粺
銆銆銆s = s & Chr(5) & "鍚姩閫夐」" & i & " :" & item.SystemStartupOptions(i) _
銆銆銆銆銆& vbCrLf
銆銆Next i
銆Next
銆Text1.Text = s
End Sub
銆銆杩愯绋嬪簭锛岀偣鍑籆ommand1锛屽湪textBox涓氨鍙互鏄剧ず璁$畻鏈虹殑淇℃伅銆
銆銆鍦ㄤ笂闈㈢殑浠g爜涓紝绋嬪簭閫氳繃GetObject("winmgmts:")鑾峰緱WMI瀵硅薄锛岀劧鍚庤幏寰椾笅闈㈢殑Win32_ComputerSystem瀛愰」骞堕氳繃璁块棶Win32_ComputerSystem瀵硅薄涓殑鍒嗛」鑾峰緱绯荤粺涓殑淇℃伅銆
銆銆闇瑕佽鏄庣殑鏄紝骞朵笉鏄墍鏈夌殑绯荤粺閮芥敮鎸乄MI锛屽湪鏈変簺绯荤粺涓棤娉曟樉绀虹敓浜у巶瀹剁瓑淇℃伅銆
銆銆鐜板湪鐨勮绠楁満浠ュ強缃戠粶缁勬垚鍗佸垎澶嶆潅銆備緥濡傜郴缁熺‖浠舵柟闈㈠氨鏈変富鏉裤佺‖鐩樸佺綉鍗... 銆
銆銆杞欢鏂归潰鏈夋搷浣滅郴缁熴佺郴缁熶腑瀹夎鐨勮蒋浠躲佹鍦ㄨ繍琛岀殑杩涚▼绛夌瓑銆傜綉缁滄柟闈㈡湁鍩熴佸伐浣滅粍绛夌瓑銆傚埄鐢╓MI鍙互璁块棶涓婇潰鐨勫叏閮ㄤ俊鎭紝浣嗘槸濡傛灉鍚戜笂闈竴鏍风殑鍒╃敤鍒嗛」鏉ヨ闂殑璇濅細寰堥夯鐑︺備负姝わ紝WMI鎻愪緵浜嗕竴绉嶇被浼糞QL璇彞鐨勬煡璇㈣鍙ワ紝鍙互閫氳繃鏌ヨ璇彞鑾峰緱WMI瀵硅薄涓嬬殑瀛愰」銆
銆銆涓嬮潰鏄竴涓亶鍘嗙郴缁熶腑瀹夎鐨勭綉鍗″苟杩斿洖缃戝崱MAC鍦板潃鐨勪唬鐮侊細
Private Function MACAddress() As String
銆Set objs = GetObject("winmgmts:").ExecQuery( _
銆銆"SELECT MACAddress " & _
銆銆"FROM Win32_NetworkAdapter " & _
銆銆"WHERE " & _
銆銆"((MACAddress Is Not NULL) " & _
銆銆"AND (Manufacturer 锛滐紴 " & _
銆銆"鈥楳icrosoft鈥))")
銆For Each obj In objs
銆銆MACAddress = obj.MACAddress
銆銆Exit For
銆Next obj
End Function
銆銆涓婇潰鐨勪唬鐮佽幏寰梂MI瀵硅薄锛岀劧鍚庤繍琛孍xecQuery鎵ц涓涓猈MI鏌ヨ璇彞鑾峰緱瀹夎鐨勭綉鍗″苟杩斿洖缃戝崱鐨凪AC鍦板潃銆
銆銆WMI杩樻敮鎸佷簨浠跺鐞嗭紝璁╃▼搴忓彲浠ュ鐞嗙郴缁熶簨浠讹紝渚嬪绋嬪簭杩愯銆佸叧闂紝鍙Щ鍔ㄩ┍鍔ㄥ櫒鐨勬彃鍏ャ佸彇鍑虹瓑銆備笅闈㈡槸涓涓彲浠ュ绯荤粺涓繍琛岀▼搴忚繘琛岀洃鎺х殑绋嬪簭銆
銆銆棣栧厛寤虹珛涓涓柊宸ョ▼锛岀劧鍚庣偣鍑昏彍鍗曠殑 project | references 椤癸紝鍦╮eferences鍒楄〃涓変腑Microsoft WMI Scripting Library灏哤MI瀵硅薄搴撳姞鍏ュ伐绋嬩腑銆傜劧鍚庡湪Form1涓姞鍏ヤ竴涓狶istBox鎺т欢锛岀劧鍚庡湪Form1涓姞鍏ヤ互涓嬩唬鐮侊細
Option Explicit
Dim Locator As SWbemLocator
Dim Services As SWbemServices
Dim WithEvents StatusSink As SWbemSink
Private Sub KillEvents()
銆StatusSink.Cancel
銆Set StatusSink = Nothing
End Sub
Private Sub Form_Load()
銆Dim Query As String
銆Set StatusSink = New SWbemSink
銆Set Locator = CreateObject("WbemScripting.SWbemLocator")
銆Set Services = Locator.ConnectServer()
銆Query = "SELECT * FROM __InstanceCreationEvent "
銆Query = Query + "WITHIN 1 "
銆Query = Query + "WHERE TargetInstance ISA 鈥榃in32_Process鈥"
銆Services.ExecNotificationQueryAsync StatusSink, Query
End Sub
Private Sub StatusSink_OnObjectReady(ByVal StatusEvent As SWbemObject, _
ByVal EventContext As SWbemNamedValueSet)
銆Dim arr
銆Dim strQue As String
銆Dim i As Integer
銆List1.Clear
銆arr = Split(StatusEvent.GetObjectText_, Chr(10))
銆For i = LBound(arr) To UBound(arr)
銆銆List1.AddItem arr(i)
銆Next i
End Sub
Private Sub StatusSink_OnCompleted(ByVal HResult As WbemErrorEnum, _
ByVal ErrorObject As SWbemObject, _
ByVal EventContext As SWbemNamedValueSet)
If HResult 锛滐紴 wbemErrCallCancelled Then
鈥橀敊璇鐞
End If
End Sub
銆銆鍦ㄤ笂闈㈢殑绋嬪簭涓畾涔変簡涓涓猄WbemSink瀵硅薄StatusSink锛岀劧鍚庡缓绔嬩竴涓猄WbemServices瀵硅薄Server锛屽苟灏哠tatusSink杩炴帴鍒癝erver瀵硅薄涓娿傝繖鏍峰氨鍙互閫氳繃StatusSink鐩戞帶绋嬪簭鐨勮繍琛屻
銆銆杩愯绋嬪簭锛岀劧鍚庝换鎰忚繍琛屼竴涓▼搴忥紝鍦‵orm1鐨凩istBox涓氨鍙互鍒楀嚭杩愯鐨勭▼搴忕殑淇℃伅銆
銆銆WMI搴旂敤鏈寮哄ぇ鐨勪竴闈㈡槸鍙互閫氳繃WEB椤甸潰鏉ュ疄鐜拌繙绋嬬鐞嗐備笅闈㈡垜浠潵寤虹珛涓涓狧TML椤甸潰锛岃椤甸潰鍙互瀹炵幇鍚戜笂闈㈢殑VB绋嬪簭涓鏍峰姩鎬佺洃鎺х郴缁熶腑杩愯鐨勭▼搴忋傜洃鎺х郴缁熶腑绋嬪簭杩愯鐨凥TML浠g爜濡備笅锛
锛渉tml锛
锛渉ead锛
锛渙bject ID="mysink" CLASSID= "CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223"锛烇紲/object锛
锛/head锛
锛淪CRIPT锛
銆function window.onload()
銆{
銆銆var locator = new ActiveXObject ("WbemScripting.SWbemLocator");
銆銆var service = locator.ConnectServer();
銆銆szQuery = "SELECT * FROM __InstanceCreationEvent ";
銆銆szQuery += "WITHIN 1 ";
銆銆szQuery += "WHERE TargetInstance ISA 鈥榃in32_Process鈥";
銆銆service.ExecNotificationQueryAsync(mysink,szQuery);
銆}
锛/SCRIPT锛
锛渟cript FOR="mysink" EVENT="OnObjectReady(obj, objAsyncContext)"锛
銆document.all.info.innerHTML += obj.TargetInstance.Name + "锛渂r锛";
锛/script锛
锛渂ody锛
銆锛渟pan ID="info"锛烇紲/span锛
锛/body锛
锛/html锛
銆銆淇濆瓨浠g爜涓篐tm鍚庣紑鐨勯〉闈㈡枃浠躲傚弻鍑绘墦寮缃戦〉锛岀劧鍚庤繍琛屼竴涓▼搴忥紝鍦ㄧ綉椤典笂灏卞彲浠ュ垪鍑鸿繍琛岀殑绋嬪簭鐨勬枃浠跺悕銆
銆銆浠ヤ笂绠瑕佺殑浠嬬粛浜嗕竴涓媁MI鐨勫簲鐢紝瀹為檯涓奧MI瀵硅薄鐨勬搷浣滄槸鍗佸垎澶嶆潅锛屽姛鑳戒篃鏄緢寮哄ぇ鐨勶紝渚嬪浣犲彲浠ラ氳繃WMI鍦ㄦ湇鍔″櫒涓婄洃鎺ф暣涓眬鍩熺綉涓婄殑璁$畻鏈恒佸悜灞鍩熺綉涓婄殑璁$畻鏈烘壒閲忓畨瑁呰蒋浠讹紙渚嬪鏉姣掕蒋浠讹級銆傞氳繃椤甸潰杩滅▼璁块棶鏈嶅姟鍣紝鎺т欢鏈嶅姟鍣ㄨ繍琛岀▼搴忥紝娣诲姞鐢ㄦ埛绛夈傚叧浜庢洿澶氱殑WMI鐨勫簲鐢紝璇昏呭彲浠ヨ闂甅SDN涓奧MI寮鍙戠殑涓婚〉:
銆銆鑾峰彇鏇村淇℃伅銆




发表于 2009-1-5 19:48
| 











