偶尔,Windows机器上的某个程序会发疯,只是挂起。所以我将调用任务管理器并点击“结束进程”按钮。但是,这并不总是有效;如果我尝试了足够多次,那么它通常会最终死亡,但我真的希望能够立即杀死它。在Linux上我只能kill -9
来保证进程会死掉。
这也可以用于编写批处理脚本,编写批处理脚本就是编程。
是否有一些程序或Windows附带的命令会一直杀死进程?免费的第三方应用程序会没问题,但我更愿意能够在我第一次坐下来的机器上做到这一点。
答案 0 :(得分:313)
“结束进程”调用TerminateProcess
,这是Windows知道杀死进程的最终方式。
如果它没有消失,它当前锁定等待一些内核资源(可能是一个有缺陷的驱动程序),并且没有任何东西(没有重启)你可以做的让这个过程消失。
在以下时间查看此博客条目:http://blogs.technet.com/markrussinovich/archive/2005/08/17/unkillable-processes.aspx
像Linux这样的基于Unix的系统也存在这样的问题:如果进程处于所谓的“不间断睡眠”(由top和ps显示为状态kill -9
),那么进程可以在D
中存活。这些过程睡得很好,以至于它们无法处理输入信号(这是kill
所做的 - 发送信号。)
通常情况下,不间断睡眠不应该持续很长时间,但是在Windows下,破坏的驱动程序或损坏的用户空间程序(vfork
没有exec
)可能会永远在D
睡眠。
答案 1 :(得分:220)
taskkill /im myprocess.exe /f
“/ f”代表“强制”。 如果你知道PID,那么你可以指定,如:
taskkill /pid 1234 /f
还有很多其他选项,只需键入taskkill /?对于他们所有人。 “/ t”选项可以杀死进程和任何子进程;这可能对你有用。
答案 2 :(得分:37)
答案 3 :(得分:22)
从sysinternals(现在是Microsoft)获取进程资源管理器
答案 4 :(得分:20)
taskkill /im processname.exe /f
如果说错误,
错误:进程" process.exe"与PID 1234不可能 终止。 原因:访问被拒绝。
然后尝试以管理员身份运行cmd.exe。
答案 5 :(得分:15)
一个效果很好的技巧是附加一个调试器,然后退出调试器。
在XP或Windows 2003上,您可以使用开箱即用的ntsd执行此操作:
ntsd -pn myapp.exe
ntsd将打开一个新窗口。只需在窗口中输入'q'即可退出调试器并取出该过程。
即使任务管理器似乎无法杀死进程,我也知道这个工作。
不幸的是,ntsd已从Vista中移除,您必须安装(免费)debbugging tools for windows才能获得合适的调试器。
答案 6 :(得分:6)
设置AT命令以将任务管理器或进程资源管理器作为SYSTEM运行。
AT 12:34 /interactive "C:/procexp.exe"
如果进程资源管理器位于您的根C驱动器中,那么这将打开它作为SYSTEM并且您可以在不获取任何访问被拒绝错误的情况下终止任何进程。将此设置为将来的一分钟,然后会弹出给你。
答案 7 :(得分:1)
我也遇到了这个问题,这是我的解决方法。
1/ 打开 « 任务管理器 «
2/ 在列表中找到应用名称
3/ 找到后,右键单击其名称,然后单击“属性”
4/ 在属性界面中,点击 « security «
5/ 点击«编辑»更改权限
6/“拒绝”所有用户的所有权限,点击“应用”,然后点击“确定”
7/ 点击«高级»进行特殊权限设置
8/ 删除所有用户的权限
9/点击«应用»然后«确定»
10/ 点击«应用»,然后再次点击«确定»
11/ 您现在可以在任务管理器上终止进程并卸载您想要的应用程序。
答案 8 :(得分:0)
当ntsd访问被拒绝时,请尝试:
ZeroWave被设计成一个简单的工具,可以提供任何类型过程的多级终止。
由于其简单的安装和非常友好的图形界面,ZeroWave也是一个易于使用的程序。
ZeroWave有三种终止模式,“INSANE”模式可以终止任何可在Windows上运行的进程。
看来ZeroWave无法杀死avp.exe
答案 9 :(得分:0)
仅供参考,有时您可以使用SYSTEM或Trustedinstaller杀死任务;)
google quickkill_3_0.bat
sc config TrustedInstaller binPath= "cmd /c TASKKILL /F /IM notepad.exe
sc start "TrustedInstaller"