[英]How to terminate process using 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 下的进程?
我过去使用它的方法是使用 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
尝试显式断言调试权限{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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.