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?
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