¿Eliminar proceso por nombre y propietario?

12

Antes miro en reinventar la rueda y rueda mi propia, es cualquier persona consciente de una aplicación / utilidad que permite que mate a los procesos, filtrando por tanto el nombre del proceso y el propietario del proceso? Alternativamente, ¿podría hacerse esto a través de powershell? (Mi powershell-fu lamentablemente falta).

He mirado los dos pskilly taskkill. Aunque pskillpermite terminar por nombre de proceso, no me permite filtrar más por propietario del proceso. También he visto WMI a través de wmic ( wmic process), pero la interfaz WMI no devuelve el propietario del proceso (al menos por lo que puedo decir), por lo que tampoco puedo usar esto.

Justificación
Realizo una gran parte del desarrollo en Windows. Algo de esto implica tratar con Servicios de componentes (COM +). COM + tiene un proceso de host genérico, dllhost.exe, que se usa tanto para elementos personalizados (es decir, cosas que he desarrollado) como para procesos del sistema. Puedo diferenciarlos por el propietario con el que se ejecutan. Entonces, por ejemplo, quiero eliminar todos los procesos dllhost.exe que poseo, pero ignoro los que son propiedad de SYSTEM.

Esto me ahorraría ir al Administrador de tareas de forma regular e identificar y eliminar manualmente cada uno :-)

Chris J
fuente

Respuestas:

5

En powershell harías:

gwmi -query "select * from win32_process where name='PROCESSNAME.exe'" | %{if($_.GetOwner().User -eq 'USERNAME'){$_.terminate()}}
EBGreen
fuente
Ah, excelente salud. Eso funciona bien :-)
Chris J
24

No estabas buscando lo suficiente.

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

Incluso puede filtrar por módulos cargados, utilizando /fi "modules eq libfoo.dll".

usuario1686
fuente
2
Mucho más fácil que el método PS :)
EBGreen
Tienes razón, no estaba buscando lo suficiente. Eso es malo de mi parte.
Chris J