web-dev-qa-db-ja.com

名前と所有者でプロセスを強制終了しますか?

ホイールの再発明を検討して自分のロールを始める前に、プロセス名 プロセスオーナー?あるいは、これはPowerShellを介して行うことができますか? (私のpowershell-fuは悲しいことに欠けています)。

pskilltaskkillの両方を見てきました。 pskillではプロセス名で終了できますが、プロセス所有者でさらにフィルタリングすることはできません。また、wmicを介してWMIを確認しました(wmic process)、ただし、WMIインターフェイスはプロセス所有者を返さないため(少なくとも私が知る限り)、これも使用できません。

根拠
私はWindowsで開発のチャンクを行います。これには、コンポーネントサービス(COM +)の処理が含まれます。 COM +には、カスタム(つまり、私が開発したもの)要素とシステムプロセスの両方に使用される汎用ホストプロセス(dllhost.exe)があります。私は彼らが実行している所有者によってそれらを区別することができます。したがって、たとえば、自分が所有するすべてのdllhost.exeプロセスを強制終了しますが、SYSTEMが所有するプロセスは無視します。

これにより、定期的にタスクマネージャーにアクセスし、それぞれを識別して手動で強制終了する手間が省けます:-)

12
Chris J

Powershellでは、次のようにします。

gwmi -query "select * from win32_process where name='PROCESSNAME.exe'" | %{if($_.GetOwner().User -eq 'USERNAME'){$_.terminate()}}
5
EBGreen

あなたは十分に一生懸命探していませんでした。

taskkill /f /fi "imagename eq foo.exe" /fi "username eq Chris"

/fi "modules eq libfoo.dll"を使用して、ロードされたモジュールでフィルタリングすることもできます。

24
user1686