2009-05-21 18 views
14

J'ai ce code VBScript pour mettre fin à un processusComment terminer le processus en utilisant 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 

Il fonctionne très bien avec certains processus, mais quand il est à tout processus fonctionne sous le système, il ne peut pas l'arrêter.

Est-ce qu'il y a quelque chose que j'ai besoin d'ajouter pour tuer le processus sous SYSTEM?

Répondre

17

La façon dont j'ai réussi à travailler dans le passé est en utilisant PsKill de Microsoft SysInternals. PsKill peut mettre fin aux processus système et à tous les processus verrouillés.

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 
+0

Excellent travail. Merci beaucoup, j'ai cherché 2 heures sur le web sans aucune chance :-), maintenant ça marche super bien. –