Zabić proces według nazwiska i właściciela?

12

Czy zanim zacznę wymyślać koło i rzucić własne, czy ktoś wie o aplikacji / narzędziu, które pozwala mi zabijać procesy, filtrując według nazwy i właściciela procesu? Alternatywnie można to zrobić za pomocą programu PowerShell? (Niestety nie ma mojego PowerShell-fu).

Spojrzałem na oba pskilli taskkill. Chociaż pskillpozwala na zakończenie według nazwy procesu, nie pozwala mi na dalsze filtrowanie według właściciela procesu. Patrzyłem również na WMI za pomocą wmic ( wmic process), ale interfejs WMI nie zwraca właściciela procesu (przynajmniej z tego, co mogę powiedzieć), więc też nie mogę tego użyć.

Uzasadnienie
Robię kawał rozwoju w systemie Windows. Niektóre z nich obejmują obsługę usług składowych (COM +). COM + ma ogólny proces hosta - dllhost.exe - który jest używany zarówno do niestandardowych elementów (tj. Rzeczy, które opracowałem), jak i procesów systemowych. Mogę je rozróżnić według właściciela, którym prowadzą. Na przykład chcę zabić wszystkie procesy dllhost.exe będące własnością mnie, ale zignoruj ​​procesy należące do SYSTEM.

Pozwoliłoby to zaoszczędzić mi regularnego wchodzenia do Menedżera zadań oraz identyfikowania i ręcznego zabijania każdego :-)

Chris J
źródło

Odpowiedzi:

5

W PowerShell zrobiłbyś:

gwmi -query "select * from win32_process where name='PROCESSNAME.exe'" | %{if($_.GetOwner().User -eq 'USERNAME'){$_.terminate()}}
EBGreen
źródło
Ach - doskonałe okrzyki. To działa dobrze :-)
Chris J
24

Nie wyglądałeś wystarczająco mocno.

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

Możesz nawet filtrować według załadowanych modułów, używając /fi "modules eq libfoo.dll".

użytkownik1686
źródło
2
Znacznie łatwiej niż metoda PS :)
EBGreen,
Masz rację - nie patrzyłem wystarczająco mocno. To źle z mojej strony.
Chris J