Убить процесс по имени и владельцу?


12

Перед тем, как смотреть в изобретать колесо и катиться самостоятельно, кто - нибудь в курсе прикладной / утилита , которая позволяет мне убивать процессы, фильтрация по имени процесса как и владельца процесса? Или это можно сделать с помощью powershell? (К сожалению, моей PowerShell-фу не хватает).

Я смотрел на оба pskillи taskkill. Хотя pskillпозволяет завершить по имени процесса, он не позволяет мне дополнительно фильтровать по владельцу процесса. Я также посмотрел на WMI через wmic ( wmic process), но интерфейс WMI не возвращает владельца процесса (по крайней мере из того, что я могу сказать), поэтому не могу использовать это также.

Обоснование
Я делаю кусок разработки на Windows. Частично это связано с работой с компонентными службами (COM +). В COM + есть общий хост-процесс - dllhost.exe, который используется как для пользовательских (т.е. разработанных мною) элементов, так и для системных процессов. Я могу различить их по владельцу, которым они управляют. Так, например, я хочу уничтожить все принадлежащие мне процессы dllhost.exe, но игнорировать те, которые принадлежат SYSTEM.

Это избавило бы меня от необходимости регулярно заходить в диспетчер задач, выявлять и вручную убивать каждого из них :-)

Ответы:


5

В powershell вы бы сделали:

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

Ах - отличные ура. Это хорошо работает :-)
Крис Дж

24

Вы не выглядели достаточно усердно.

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

Вы можете даже фильтровать по загруженным модулям, используя /fi "modules eq libfoo.dll".


2
Гораздо проще, чем метод PS :)
EBGreen

Ты прав - я не выглядел достаточно усердно. Это плохо с моей стороны.
Крис Джей
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.