Tuer le processus par son nom et son propriétaire?

12

Avant de réinventer la roue et de rouler la mienne, quelqu'un connaît-il une application / un utilitaire qui me permet de tuer les processus, en filtrant à la fois par nom de processus et par propriétaire de processus? Sinon, cela pourrait-il être fait via PowerShell? (Mon powershell-fu fait malheureusement défaut).

J'ai regardé les deux pskillet taskkill. Bien qu'il pskillautorise la terminaison par nom de processus, il ne me permet pas de filtrer davantage par propriétaire de processus. J'ai également regardé WMI via wmic ( wmic process), mais l'interface WMI ne renvoie pas le propriétaire du processus (du moins d'après ce que je peux dire), donc je ne peux pas l'utiliser non plus.

Justification
Je fais un gros morceau de développement sur Windows. Une partie de cela implique de traiter avec les services de composants (COM +). COM + possède un processus hôte générique - dllhost.exe - qui est utilisé à la fois pour les éléments personnalisés (c'est-à-dire les éléments que j'ai développés) et les processus système. Je peux les différencier par le propriétaire qu'ils dirigent. Ainsi, par exemple, je veux tuer tous les processus dllhost.exe qui m'appartiennent, mais ignorer ceux appartenant à SYSTEM.

Cela m'éviterait d'entrer régulièrement dans le Gestionnaire des tâches et d'identifier et de tuer manuellement chacun :-)

Chris J
la source

Réponses:

5

En PowerShell, vous feriez:

gwmi -query "select * from win32_process where name='PROCESSNAME.exe'" | %{if($_.GetOwner().User -eq 'USERNAME'){$_.terminate()}}
EBGreen
la source
Ah - excellentes acclamations. Cela fonctionne bien :-)
Chris J
24

Tu ne cherchais pas assez fort.

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

Vous pouvez même filtrer par modules chargés, en utilisant /fi "modules eq libfoo.dll".

user1686
la source
2
Beaucoup plus facile que la méthode PS :)
EBGreen
Tu as raison - je ne regardais pas assez fort. C'est mauvais de ma part.
Chris J