Как завершить процесс с помощью VBScript

У меня есть этот код 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  

Он отлично работает с некоторыми процессами, но когда дело доходит до любого процесса, выполняемого под SYSTEM, он не может его остановить.

Есть ли что-нибудь, что мне нужно добавить, чтобы убить процесс в SYSTEM?

Ответы

Ответ 1

То, как я получил это, чтобы работать в прошлом, заключается в использовании PsKill от Microsoft SysInternals. PsKill может завершить системные процессы и любые заблокированные процессы.

Вам необходимо загрузить исполняемый файл и поместить его в тот же каталог, что и script, или добавить его в вызов WshShell.Exec. Здесь ваш образец кода был изменен для использования 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