Действительно убить процесс в Windows
Иногда программа на Windows-машине сходит с ума и просто зависает. Поэтому я вызову диспетчер задач и нажму кнопку "Завершить процесс". Однако это не всегда работает; если я попробую это достаточно времени, тогда он, как правило, умрет в конце концов, но мне бы очень хотелось просто убить его немедленно. В Linux я мог бы просто kill -9
гарантировать, что процесс умрет.
Это также можно использовать для написания пакетных скриптов и написания сценариев партии - это программирование.
Есть ли какая-то программа или , которая поставляется с Windows, которая всегда будет убивать процесс? Бесплатное стороннее приложение будет в порядке, хотя я бы предпочел быть в состоянии сделать это на машинах, с которыми я сажусь в первый раз.
Ответы
Ответ 1
"Завершить процесс" на вкладках "Процессы-Таб" вызывает TerminateProcess, который является самым последним способом для Windows, чтобы убить процесс.
Если он не исчезнет, он в настоящий момент заблокирован, ожидая некоторого ресурса ядра (возможно, багги-драйвера), и нет ничего (кроме перезагрузки), которое вы могли бы сделать, чтобы процесс исчез.
Взгляните на эту запись в блоге с обратного пути, когда: http://blogs.technet.com/markrussinovich/archive/2005/08/17/unkillable-processes.aspx
Системы на базе Unix, такие как Linux, также имеют такую проблему, когда процессы могут пережить kill -9, если они находятся в так называемом "Бесперебойном сне" (показано сверху и ps как состояние D), в этот момент процессы спят так хорошо, что они не могут обрабатывать входящие сигналы (это то, что убивает - посылает сигналы).
Обычно Бесперебойный сон не должен длиться долго, но как под окнами, сломанные драйверы или сломанные программы пользовательского пространства (vfork без exec) могут заканчиваться спать в D навсегда.
Ответ 2
taskkill /im myprocess.exe /f
"/f" для "силы".
Если вы знаете PID, вы можете указать это, как в:
taskkill /pid 1234 /f
Возможны многие другие варианты, просто введите taskkill/? для всех. Параметр "/t" убивает процесс и любые дочерние процессы; которые могут быть вам полезны.
Ответ 3
Process Hacker имеет множество способов убить процесс.
![]()
(Щелкните правой кнопкой мыши процесс, затем перейдите в раздел "Разное" > "Терминатор".)
Ответ 4
Получить проводник процесса из sysinternals (теперь Microsoft)
Проводник процессов - Windows Sysinternals | Документы Microsoft
Ответ 5
JosepStyons прав. Откройте cmd.exe и запустите
taskkill /im processname.exe /f
Если есть сообщение об ошибке,
ОШИБКА: Процесс "process.exe" с PID 1234 не может быть прекращается. Причина: доступ запрещен.
затем попробуйте запустить cmd.exe как администратор.
Ответ 6
Один трюк, который хорошо работает, - это присоединить отладчик, а затем выйти из отладчика.
В XP или Windows 2003 вы можете сделать это, используя ntsd, который поставляется из коробки:
ntsd -pn myapp.exe
ntsd откроет новое окно. Просто введите "q" в окне, чтобы выйти из отладчика и вынуть процесс.
Я знаю, что это работает, даже если диспетчер задач не способен убить процесс.
К сожалению, ntsd был удален из Vista, и вам нужно установить (бесплатно) инструменты для debbugging для Windows, чтобы получить подходящий отладчик.
Ответ 7
настроить AT-команду для запуска диспетчера задач или проводника процессов как SYSTEM.
AT 12:34 /interactive "C:/procexp.exe"
Если в вашем корневом диске C был обработчик процессов, это откроет его как SYSTEM, и вы можете убить любой процесс, не получая никаких отрицательных ошибок доступа. Установите это как минута в будущем, затем он появится для вас.
Ответ 8
Когда доступ ntsd запрещен, попробуйте:
ZeroWave был разработан как простой инструмент, обеспечивающий многоуровневое завершение любого процесса.
ZeroWave также является простой в использовании программой благодаря простой установке и очень дружественному графическому интерфейсу.
ZeroWave имеет три режима завершения и с режимом "INSANE" может прекратить любой процесс, который может работать в Windows.
Кажется, что ZeroWave не может убить avp.exe