11

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

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

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

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

2 ответа2

23

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

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

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

5

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .