偶尔,Windows机器上的程序会发疯,只是挂起.所以我将调用任务管理器并点击"结束进程"按钮.但是,这并不总是有效; 如果我尝试了足够多次,那么它通常会最终死亡,但我真的希望能够立即杀死它.在Linux上我可以kill -9
保证一个进程会死掉.
这也可用于编写批处理脚本,编写批处理脚本是编程.
Windows中是否有一些程序或命令会一直杀死进程? 一个免费的第三方应用程序没问题,虽然我更愿意能够在我第一次坐下来的机器上这样做.
1> pilif..:
进程选项卡调用中的"结束进程" TerminateProcess
是Windows知道杀死进程的最终方式.
如果它没有消失,它当前锁定等待一些内核资源(可能是一个有缺陷的驱动程序)并且没有任何东西(没有重启)你可以做以使该过程消失.
在以下情况下看看这篇博客文章:http://blogs.technet.com/markrussinovich/archive/2005/08/17/unkillable-processes.aspx
像Linux这样的基于Unix的系统也存在这样的问题,即kill -9
如果它们处于所谓的"不间断睡眠"(由top和ps显示为状态D
),则进程可以存活,此时进程会睡得很好,以至于它们无法处理传入的信号(这是什么kill
- 发送信号).
通常情况下,不间断睡眠不应该持续很长时间,但是在Windows下,破坏的驱动程序或破坏的用户空间程序(vfork
没有exec
)可能会D
永远沉睡.
虽然我讨厌这是正确答案,但毫无疑问,我认为它比下面的taskkill更正确....愚蠢的越野车司机!
这是由其他一些过程引起的,确保初始过程始终在运行.你杀死了你的旧实例,看门狗启动了一个新实例
这个答案根本不是**正确的."结束进程"并不是杀死进程的最终方法,因为它无法杀死服务进程(例如).`taskkill/f`是最终极的.
比重启更轻松的是再次注销/开启.仍然失去工作,但也许不是那么多时间.
TaskKill/f只调用`TerminateProcess` API.它与任务管理器完全相同(尽管如此,你是正确的,具有提升的权限).
显然,这不是杀死进程的"最终方式".在Windows中有一些进程,在你用任务管理器销毁它们后,它们就会立即重生,好像什么也没发生......:/
2> JosephStyons..:
taskkill /im myprocess.exe /f
"/ f"代表"强制".如果你知道PID,那么你可以指定,如:
taskkill /pid 1234 /f
还有很多其他选项,只需输入taskkill /?对于他们所有人."/ t"选项可以杀死进程和任何子进程; 这可能对你有用.
这比任务经理的"结束过程"更有效.
只是一张纸条.如果您正在编写用于服务器管理的脚本,这将特别有用.kill.exe(来自NT Res工具包)将导致程序退出,但是如果你安装了崩溃处理程序(特别是windbg),它可能会导致问题,因为操作系统会将被杀死的进程视为已崩溃,并尝试调试它.Taskkill不会导致此问题.
@lzprgmr - taskkill和"end task"可能都调用相同的底层Windows函数"TerminateProcess"http://msdn.microsoft.com/en-us/library/windows/desktop/ms686714%28v=vs.85%29. ASPX
我一直试图强行杀死SugarSync.exe而不必重新启动(因为重新启动SugarSync两次才真正开始使它再次工作),但taskkill/T/F/IM SugarSync.exe不起作用 - 即使它声称"成功"
谢谢!当_End Task_拒绝工作时,taskkill / pid 1234 / f确实可以工作!哇!
@埃迪 这比任务管理器的“结束过程”更有效。我只是用它杀死了一个进程,任务管理器拒绝杀死它。即使它可以在后台运行相同的代码(我并不是说确实如此),您也可以自由地以不同的特权级别运行此命令。
3> Mehrdad..:
Process Hacker有许多方法可以杀死进程.
(右键单击该进程,然后转到Miscellaneous-> Terminator.)
它蓝屏了我的电脑.重启后,该过程消失了.做得好... -.-'
不适用于所有流程,我有一个幸存下来的所有选项.
找不到多少佐证,因为搜索这个只会产生数百万的免费下载!链接.但它确实做了它所说的,病毒风险等等.
不幸的是终结者在v2.39被删除:(
@Nuzzolilo:好的!右键单击该进程,转到Miscellaneous-> Terminator.
4> Dhruv Chandh..:
JosepStyons是对的.打开cmd.exe并运行
taskkill /im processname.exe /f
如果有错误说,
错误:无法终止带有PID 1234的进程"process.exe".原因:访问被拒绝.
然后尝试以管理员身份运行cmd.exe.
以管理员身份运行时,错误会更改.它现在说:`错误:PID 17888(PID 17880的子进程)的进程无法终止.原因:没有任务的实例.它指的是父PID 17880.由于找不到父,它不会杀死孤儿.:(
5> Iain Holder..:
从sysinternals(现在是Microsoft)获取进程资源管理器
Process Explorer - Windows Sysinternals | Microsoft Docs
这确实提供了更多的信息(以及搜索锁定句柄的一些有限的能力),但是我没有比使用基本任务管理器更多地成功杀死任务.某些进程(如反病毒和SugarSync.exe)只是拒绝死亡.
6> Rob Walker..:
一个效果很好的技巧是附加一个调试器,然后退出调试器.
在XP或Windows 2003上,您可以使用开箱即用的ntsd执行此操作:
ntsd -pn myapp.exe
ntsd将打开一个新窗口.只需在窗口中键入"q"即可退出调试器并取出该过程.
即使任务管理器似乎无法杀死进程,我也知道这可以工作.
不幸的是,ntsd已经从Vista中移除了,你必须为windows安装免费的debbugging工具以获得合适的调试器.
当Visual Studio和正在调试的应用程序都挂起时,附加并终止VS的旧实例.杀手可以是VS的新实例,然后可以打开旧项目并允许您继续工作.
7> 小智..:
设置AT命令以将任务管理器或进程资源管理器作为SYSTEM运行.
AT 12:34 /interactive "C:/procexp.exe"
如果进程资源管理器在你的根C驱动器中,那么这将打开它作为SYSTEM,你可以杀死任何进程而不会获得任何访问被拒绝错误.将此设置为将来的一分钟,然后它会弹出给你.
我在尝试此操作时收到以下警告,因此它似乎不再起作用:"警告:由于安全性增强,此任务将在预期但不交互的情况下运行.如果需要交互式任务,请使用schtasks.exe实用程序('schtasks /?'详情)."