Kill processo por nome e proprietário?

11

Antes de eu começar a reinventar a roda e rolar a minha, alguém tem conhecimento de um aplicativo / utilitário que me permite matar processos, filtrando pelo nome do processo e proprietário do processo? Alternativamente, isso poderia ser feito através do powershell? (Meu powershell-fu está tristemente ausente).

Eu olhei os dois pskill e taskkill . Embora pskill permita terminar pelo nome do processo, ele não me permite filtrar ainda mais pelo proprietário do processo. Eu também olhei para o WMI via wmic ( wmic process ), mas a interface WMI não retorna o proprietário do processo (pelo menos do que eu posso dizer), então não posso usar isso também.

Fundamentação
Eu faço um monte de desenvolvimento no Windows. Parte disso envolve lidar com serviços de componentes (COM +). O COM + tem um processo de host genérico - dllhost.exe - que é 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 executam. Então, por exemplo, eu quero matar todos os processos dllhost.exe de minha propriedade, mas ignorar aqueles de propriedade do SYSTEM.

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

    
por Chris J 05.01.2012 / 16:47

2 respostas

5

No powershell você faria:

gwmi -query "select * from win32_process where name='PROCESSNAME.exe'" | %{if($_.GetOwner().User -eq 'USERNAME'){$_.terminate()}}
    
por 05.01.2012 / 17:00
23

Você não estava procurando o suficiente.

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

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

    
por 05.01.2012 / 19:23