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 :-)

Odpowiedzi:


5

W PowerShell zrobiłbyś:

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

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".


2
Znacznie łatwiej niż metoda PS :)
EBGreen,

Masz rację - nie patrzyłem wystarczająco mocno. To źle z mojej strony.
Chris J
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.