当前位置:  开发笔记 > 运维 > 正文

真的在Windows中杀死一个进程

如何解决《真的在Windows中杀死一个进程》经验,为你挑选了7个好方法。

偶尔,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 /?'详情)."
推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有