VBScript 監(jiān)控并結(jié)束指定進(jìn)程的實(shí)現(xiàn)方法以及代碼

字號(hào):


    有時(shí)候我們需要監(jiān)控一些進(jìn)程,防止一些進(jìn)程的開啟,發(fā)現(xiàn)指定進(jìn)程運(yùn)行就關(guān)閉它,那么就可以參考下面的代碼
    代碼(monprocess.vbs):
    代碼如下:
    On Error Resume Next
    strComputer = "."
    arrTargetProcs = Array("calc.exe", "notepad.exe", "other.exe")
    '數(shù)組里為要監(jiān)視的進(jìn)程名
    Set SINK = WScript.CreateObject("WbemScripting.SWbemSink","SINK_")
    Set objWMIService = GetObject("winmgmts:" & _
    "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    objWMIService.ExecNotificationQueryAsync SINK, _
    "SELECT * FROM __InstanceCreationEvent WITHIN 1 " & _
    "WHERE TargetInstance ISA 'Win32_Process'"
    Wscript.Echo "Are monitoring processes ..."
    Do
    WScript.Sleep 1000
    Loop
    '***************************************************************************
    Sub SINK_OnObjectReady(objLatestEvent, objAsyncContext)
    'Trap asynchronous events.
    For Each strTargetProc In arrTargetProcs
    If LCase(objLatestEvent.TargetInstance.Name) = LCase(strTargetProc) Then
    intReturn = objLatestEvent.TargetInstance.Terminate
    If intReturn = 0 Then
    Wscript.Echo "Time: " & Now & ", Succeed!" & chr(9) & _
    "Name: " & objLatestEvent.TargetInstance.Name
    Else
    Wscript.Echo "Time: " & Now & ", Failed!" & chr(9) & _
    "Name: " & objLatestEvent.TargetInstance.Name
    End If
    End If
    Next
    End Sub