Действительно убивает процесс в Windows - PullRequest
354 голосов
/ 08 сентября 2008

Иногда программа на компьютере с Windows сходит с ума и просто зависает. Поэтому я вызову диспетчер задач и нажму на кнопку «Завершить процесс». Тем не менее, это не всегда работает; если я попытаюсь сделать это достаточно много раз, то он, в конце концов, умрет, но я бы очень хотел иметь возможность просто убить его немедленно. В Linux я мог просто kill -9 гарантировать, что процесс умрет.

Это также может быть использовано для написания пакетных скриптов, а написание пакетных скриптов - это программирование.

Существует ли какая-либо программа или , которая поставляется с Windows и которая всегда будет завершать процесс? Было бы хорошо бесплатное стороннее приложение, хотя я бы предпочел чтобы сделать это на машинах, в которые я впервые сажусь.

Ответы [ 9 ]

313 голосов
/ 08 сентября 2008

«Завершить процесс» на вкладке «Процессы» вызывает TerminateProcess, что является самым совершенным способом, которым Windows знает, как убить процесс.

Если он не исчезает, он в настоящий момент заблокирован в ожидании какого-либо ресурса ядра (возможно, с ошибочным драйвером) и ничего (кроме перезагрузки) вы не могли бы сделать, чтобы процесс ушел.

Посмотрите на эту запись в блоге с пути назад, когда: http://blogs.technet.com/markrussinovich/archive/2005/08/17/unkillable-processes.aspx

Системы на основе Unix, такие как Linux, также сталкиваются с проблемой, когда процессы могут пережить kill -9, если они находятся в так называемом «бесперебойном спящем режиме» (обозначается top и ps как состояние D), в этот момент процессы спят хорошо, что они не могут обрабатывать входящие сигналы (что делает kill - отправка сигналов).

Обычно непрерывный сон не должен длиться долго, но, как и в Windows, сломанные драйверы или сломанные программы пользовательского пространства (vfork без exec) могут в конечном итоге спать в D навсегда.

220 голосов
/ 08 сентября 2008
taskkill /im myprocess.exe /f

"/ f" означает "сила". Если вы знаете PID, вы можете указать это, например:

taskkill /pid 1234 /f

Возможно множество других опций, просто введите taskkill /? для всех них. Параметр "/ t" убивает процесс и любые дочерние процессы; это может быть полезно для вас.

37 голосов
/ 07 июня 2014

Process Hacker имеет множество способов убить процесс.

(Щелкните правой кнопкой мыши по процессу, затем перейдите в Разное-> Терминатор.)

22 голосов
/ 08 сентября 2008

Получить обозреватель процессов из sysinternals (сейчас Microsoft)

Process Explorer - Windows Sysinternals | Документы Microsoft

20 голосов
/ 03 мая 2014

JosepStyons прав. Откройте cmd.exe и запустите

taskkill /im processname.exe /f

Если есть ошибка:

ОШИБКА: процесс "process.exe" с PID 1234 не может быть прекращается. Причина: доступ запрещен.

, затем попробуйте запустить cmd.exe от имени администратора.

15 голосов
/ 08 сентября 2008

Один из приемов, который хорошо работает, - это подключить отладчик и затем выйти из него.

В XP или Windows 2003 вы можете сделать это с помощью ntsd, который поставляется из коробки:

ntsd -pn myapp.exe

ntsd откроет новое окно. Просто введите «q» в окне, чтобы выйти из отладчика и завершить процесс.

Я знал, что это работает, даже когда диспетчер задач не может завершить процесс.

К сожалению, ntsd был удален из Vista, и вам нужно установить (бесплатно) инструменты отладки для Windows , чтобы получить подходящий отладчик.

6 голосов
/ 15 декабря 2012

настроить команду AT для запуска диспетчера задач или проводника процессов как SYSTEM.

AT 12:34 /interactive "C:/procexp.exe"

Если бы проводник процессов находился в вашем корневом диске C, то он бы открывал его как SYSTEM, и вы могли бы уничтожить любой процесс, не получив ошибок в доступе. Установите это как минуту в будущем, затем оно появится у вас.

0 голосов
/ 28 февраля 2019

К вашему сведению, иногда вы можете использовать SYSTEM или Trustedinstaller для уничтожения задач;)

google quickkill_3_0.bat

sc config TrustedInstaller binPath= "cmd /c TASKKILL /F  /IM notepad.exe
sc start "TrustedInstaller"
0 голосов
/ 13 декабря 2011

Когда доступ ntsd запрещен, попробуйте:

ZeroWave был разработан как простой инструмент, который обеспечит многоуровневое завершение любого вида процесса.

ZeroWave также является простой в использовании программой благодаря простой установке и очень дружественному графическому интерфейсу.

ZeroWave имеет три режима завершения, а в режиме «ВНУТРИ» можно завершить любой процесс, который может выполняться в Windows.

Кажется, что ZeroWave не может убить avp.exe

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...