2009-05-21 34 views
14

tengo este código VBScript para terminar un solo procesoCómo terminar el proceso con VBScript

Const strComputer = "." 
    Dim objWMIService, colProcessList 
    Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
    Set colProcessList = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'Process.exe'") 
    For Each objProcess in colProcessList 
    objProcess.Terminate() 
    Next 

Funciona bien con algunos procesos, pero cuando se trata de cualquier proceso se ejecuta bajo el sistema, no puede detenerlo.

¿Hay algo que necesite agregar para matar el proceso en SYSTEM?

Respuesta

17

La forma en que he conseguido que esto funcione en el pasado es usando PsKill de SysInternals de Microsoft. PsKill puede finalizar los procesos del sistema y cualquier proceso que esté bloqueado.

Debe descargar el ejecutable y colocarlo en el mismo directorio que el script o agregar su ruta en la llamada WshShell.Exec. Aquí está su código de muestra modificado para usar PsKill.

Const strComputer = "." 
Set WshShell = CreateObject("WScript.Shell") 
Dim objWMIService, colProcessList 
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
Set colProcessList = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'Process.exe'") 
For Each objProcess in colProcessList 
    WshShell.Exec "PSKill " & objProcess.ProcessId 
Next 
+0

Excelente trabajo. Muchas gracias, busqué 2 horas en la web sin suerte :-), ahora funciona muy bien. –

Cuestiones relacionadas