16

我有这个 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 下的进程吗?

4

2 回答 2

18

过去,我使用PsKill的方法是使用Microsoft SysInternals 的 PsKill。PsKill 可以终止系统进程和任何被锁定的进程。

您需要下载可执行文件并将其放在与脚本相同的目录中,或者在 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
于 2009-05-21T15:36:07.723 回答
1

尝试显式断言调试权限{impersonationLevel=impersonate,(debug)}

Set wmi = GetObject("winmgmts:{impersonationLevel=impersonate,(debug)}!\\.\root\CIMV2")
Set procs = wmi.ExecQuery("SELECT * FROM Win32_Process WHERE Name='SearchIndexer.exe'", , 48)
For Each proc In procs
    proc.Terminate
Next
于 2020-03-31T22:16:46.047 回答