我关闭了一个应用程序,但该进程仍留在列表中。我尝试从任务管理器停止,但什么也没发生。没有错误消息,进程只是留在列表中。我尝试调试它,但调试器说:
无法连接到崩溃的进程。不支持请求的操作。
有时,VS2008 和其他一些程序也会发生这种情况。
如何终止它?
答案1
不幸的是,唯一真正的办法就是重新启动。
我也遇到过这个问题,我根本找不到成功终止崩溃进程的方法。我尝试了几乎所有能找到的 pskill/类似应用程序,但都失败了。
据我了解,导致此问题的最常见原因是有问题的进程加载系统驱动程序,然后向其发送无法完成的请求。显然,内核无法在进程关闭时正确释放进程的内存,因为崩溃的驱动程序处于 IO 等待状态,需要访问进程地址空间。
(大部分抄袭自)http://blogs.technet.com/markrussinovich/archive/2005/08/17/unkillable-processes.aspx
答案2
进程黑客有一个杂项→终结器命令,它将尝试多种不同的方法来终止您的进程:
在我的测试中,这一切只是锁定了 Process Hacker,并将其变成一个无法终止的进程,但在某些情况下它可能有效。
答案3
有时进程可能被资源或线程或其他东西阻塞,退出或释放它,释放进程并让它结束。这有点类似于当您删除(到回收站)资源管理器中正在使用的文件时,它实际上并没有消失并且似乎卡住了(没有立即返回正在使用/锁定错误),但如果您在五秒钟内退出锁定它的程序,文件会突然消失。
我偶尔会看到这种情况,特别是在程序中有弹出对话框或以某种方式隐藏的内容时;找到一种方法来关闭对话框可以让线程终止,从而让进程结束。
我怀疑随着多线程编程实践的增加(尽管它仍然相对较新),这样的事情会变得更加普遍,至少在一段时间内如此。
答案4
以管理员身份启动 CMD,然后使用 taskkill 强制关闭。例如:
taskkill /F 你的程序.exe
或者
taskkill /F /im 你的程序.exe
如果您对 CMD taskkill 语法感到困惑,请键入 taskkill /?