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