2009-05-21 16 views
14

Ho questo codice VBScript per terminare un unico processoCome terminare processo utilizzando 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 

Funziona bene con alcuni processi, ma quando si tratta di qualsiasi processo gira sotto sistema, non può fermarlo.

C'è qualcosa che devo aggiungere per eliminare il processo in SYSTEM?

risposta

17

Il modo in cui ho ottenuto che funzioni in passato è utilizzando PsKill da Microsoft SysInternals. PsKill può terminare i processi di sistema e tutti i processi bloccati.

È necessario scaricare l'eseguibile e inserirlo nella stessa directory dello script o aggiungere il percorso nella chiamata WshShell.Exec. Ecco il codice di esempio modificato per utilizzare 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

Ottimo lavoro. Grazie mille, ho cercato per 2 ore sul web senza fortuna :-), ora funziona alla grande. –

Problemi correlati