web-dev-qa-db-ja.com

VBScriptを使用してプロセスを終了する方法

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でプロセスを強制終了するために追加する必要があるものはありますか?

15
Mark

これを過去に機能させる方法は、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
18
Jose Basilio