web-dev-qa-db-fra.com

Comment mettre fin au processus à l'aide de VBScript

J'ai ce code VBScript pour terminer un processus

  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  

Cela fonctionne bien avec certains processus, mais quand il s'agit d'un processus exécuté sous SYSTEM, il ne peut pas l'arrêter.

Y a-t-il quelque chose que je dois ajouter pour tuer le processus sous SYSTEM?

15
Mark

La façon dont j'ai réussi à faire fonctionner cela dans le passé est d'utiliser PsKill à partir de SysInternals de Microsoft. PsKill peut mettre fin aux processus système et à tout processus verrouillé.

Vous devez télécharger l'exécutable et le placer dans le même répertoire que le script ou ajouter son chemin dans l'appel WshShell.Exec. Voici votre exemple de code modifié pour utiliser 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
18
Jose Basilio