'Desc: mata los procesos que estan en la lista de pids (variable pids). Antes de hacerlo pregunta al usuario. 'Usar con precaucion. '------------- NO CAMBIAR ------------------ ' si se desea setear pids especificos usar run-system-kill-procesos.vbs pids="*" '------------CAMBIAR SI NECESARIO----------------------' 'solo necesario si psexec el path del sistema. Si se setea el path es NECESARIO poner el "\" final 'ejemplo: 'pathPsexec="C:\Archivos de programa\Sysinternals\PsTools\" pathPsexec="" ' ESTE SCRIPT SE EJECUTA COMO LOCAL SYSTEM Y SOBREVIVE A LOGINS Y LOGOUTS. DEPENDE EN ' QUE PSEXEC ESTE INSTALADO EN EL SISTEMA Y DENTRO DEL PATH DE EJECUTABLES ' debe verificar la cantidades de argumentos; si ejecutado con 0 se ejecuta a si mismo con psexec y un argumento "System" ' si recibe un argumento asume que ya esta corriendo como sistema psexec=chr(34) & pathPsexec & "psexec" & chr(34) If WScript.Arguments.Count = 0 Then Set Sgh=WScript.CreateObject("WScript.Shell") Sgh.run(psexec & " -i -s -d wscript.exe " & chr(34) _ & WScript.ScriptFullName & chr(34) & " System") WScript.Quit(0) End If 'en este punto se debe estar ejecutando como local system ' esto supuestamente es para poder finalizar procesos no propios; de todas maneras parece no funcionar !!! Set objLoc = createobject("wbemscripting.swbemlocator") objLoc.Security_.privileges.addasstring "sedebugprivilege", true set objService = getobject("winmgmts:" & "{impersonationLevel=impersonate}!\\" _ & "." & "\root\cimv2") on error resume next numFin = 0 numFallas= 0 for each Process in objService.InstancesOf("Win32_process") If InStr(pids, "-" & Process.ProcessId & "-") <> 0 or _ pids="*" Then res=MsgBox("Desea matar a este proceso?" & VbCrLf & _ "-Nombre:" & VbCrLf & Process.Name & VbCrLf & _ "-PID:" & VbCrLf & Process.ProcessId & VbCrLf & _ "-Linea de comando:" & VbCrLf & Process.CommandLine & VbCrLf & _ "-Path al ejecutable:" & VbCrLf & Process.ExecutablePath _ ,VbYesNo, "Kill Process VBS v0.01 Copyleft 2008 Ader Javier " ) if res= vbYes then val=Process.Terminate() if val <> 0 then numFallas = numFallas +1 else numFin = numFin +1 end if mostrarMens(val) end if End If Next res= MsgBox("Fin del kill process." & VbCrLf & _ "Procesos Finalizados:" & numFin & VbCrLf & _ "Finalizaciones Falladas:" & numFallas _ , vbOkOnly ,"Kill Process VBS v0.01 Copyleft 2008 Ader Javier") Function mostrarMens(valor) select case valor case 0 MsgBox("Proceso finalizado exitosamente") case 2 MsgBox("ERROR 2: Acceso denegado") case 3 MsgBox("ERROR 3: Privilegios insuficientes") case 8 MsgBox("ERROR 8: Falla desconocida") case 9 MsgBox("ERROR 9: Path no hallado(!?)") case 21 MsgBox("ERROR 21: Parametro invalido(!?)") case Else MsgBox("ERROR: Codigo de error desconocido(!?):" & valor ) end select End Function