1つのプロセスを終了するこの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