Matar processo por nome e proprietário?

12

Antes de tentar reinventar a roda e rodar sozinho, alguém conhece um aplicativo / utilitário que me permite matar processos, filtrando por nome e proprietário do processo? Como alternativa, isso poderia ser feito através do PowerShell? (Infelizmente, meu powershell-fu está faltando).

Eu olhei para ambos pskille taskkill. Embora pskillpermita o encerramento pelo nome do processo, ele não me permite filtrar ainda mais pelo proprietário do processo. Também observei o WMI via wmic ( wmic process), mas a interface WMI não retorna o proprietário do processo (pelo menos pelo que sei), portanto, também não pode usar isso.

Justificativa
Eu desenvolvo um pouco do desenvolvimento no Windows. Parte disso envolve lidar com os Serviços de Componentes (COM +). O COM + possui um processo host genérico - dllhost.exe - usado tanto para elementos personalizados (ou seja, coisas que eu desenvolvi) quanto para processos do sistema. Eu posso diferenciá-los pelo proprietário que eles administram. Por exemplo, quero matar todos os processos dllhost.exe de minha propriedade, mas ignorar os de SYSTEM.

Isso me pouparia ir regularmente ao Gerenciador de tarefas e identificar e matar manualmente cada um deles :-)

Chris J
fonte

Respostas:

5

No PowerShell, você faria:

gwmi -query "select * from win32_process where name='PROCESSNAME.exe'" | %{if($_.GetOwner().User -eq 'USERNAME'){$_.terminate()}}
EBGreen
fonte
Ah - excelentes elogios. Isso funciona muito bem :-) #
Chris J
24

Você não estava olhando o suficiente.

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

Você pode até filtrar por módulos carregados, usando /fi "modules eq libfoo.dll".

user1686
fonte
2
Muito mais fácil do que o método PS :)
EBGreen
Você está certo - eu não estava olhando o suficiente. Isso é ruim da minha parte.
Chris J