Taskkill /f无法杀死进程

176

当我从VS中以调试模式启动实验性实例并停止调试时(有时直接从父级VS),会留下一个僵尸devenv.exe进程,我无法终止它。它占用了我的许多dll文件。

作为管理员登录到这台64位Win7计算机上,我希望能够终止任何我想要的进程。

I tried (from Administrator command prompt):

End Task from Task Manager.
TASKKILL /F /IM devenv.exe
PSKILL devenv.exe

没有返回任何错误,TASKKILLPSKILL返回终止/杀死进程的成功消息。但是devenv.exe仍在运行,因为PID保持不变,它不会被重新生成。这只有在系统重启时才会消失,这不是一个好的解决方案。

注意。LockHunter显示devenv在其本身上有锁定。而且无法解锁它。

Process Monitor shows devenv to be in some kind of 'Process Profiling' loop

上面的屏幕截图是Process Monitor的输出,显示devenv处于某种“进程分析”循环中(右键单击它并点击在新标签页中打开图像以正确查看它)。

有没有办法在Windows上终止这样的进程?


没想到你为什么没有收到错误信息,但是为了确认一件事:你是不是从以管理员权限运行的命令提示符中调用这些命令的?否则,即使你的账户有管理员权限,这些命令也不会以管理员权限运行。(虽然明显执行失败,但这并不应该允许它们返回成功结果;) - SvenS
1
是的,所有命令都是从管理员命令提示符中运行的。 - dushyantp
3
这类问题更适合在http://superuser.com上提问。是的,那里有非常好的解释。这个链接对我很有帮助。 - Jarekczek
31个回答

3

我使用taskkill命令得到了以下结果:

>taskkill /im "MyApp.exe" /t /f
ERROR: The process with PID 32040 (child process of PID 54176) could not be terminated.
Reason: There is no running instance of the task.

>taskkill /pid 54176  /t /f
ERROR: The process "54176" not found.

我用的方法是使用Sysinternalpskill 工具。
>pskill.exe -t 32040

PsKill v1.15 - Terminates processes on local or remote systems
Copyright (C) 1999-2012  Mark Russinovich
Sysinternals - www.sysinternals.com

Process 32040 killed.

你可以从Sysinternal的实时网站下载pskill点击此处

6
对我没起作用。得到的错误信息是:“无法终止进程10576:拒绝访问。” - twasbrillig
1
你可能需要使用管理员权限从命令行执行此操作? - BenV136
2
使用管理员权限在命令行中运行pskill64也无法解决我的问题。错误提示为“拒绝访问”。 - Mouffette

3

使用“taskkill /f /im“process.exe””命令可以终止进程。

对于我来说,以管理员身份运行cmd或.bat文件有效。


3
如果taskkill /F /T /PID <pid>无效,请尝试使用管理员身份打开您的终端。在Windows菜单中搜索cmd,右键单击以管理员身份运行,然后再次运行命令。这对我有用。

2
在我的情况下,这里提供的解决方案都没有起作用。最终我发现,出问题的程序在尝试轮询USB音频接口时被卡住了。因此,我拔掉了我连接的USB DAC,令我惊讶的是,应用程序立即退出了。弗朗西斯的答案提到,这可能是由于“未处理的I/O请求未被正确处理(可能是您的程序所访问的设备驱动程序)”,这可能解释了为什么这个问题得以解决。
我认为这真的取决于程序在冻结时正在做什么,但如果其他解决方案都不起作用,请尝试断开所有USB设备,看看它们中的一个是否是原因。

2

对我来说,以管理员身份运行可以解决问题:

1.在Windows中搜索cmd

2.右键单击cmd,选择“以管理员身份运行”

3.netstat -ano | findstr :8080

4.taskkill/pid (your number) /F

我的结果


如果你遇到了这样的错误:'nestat' 不被识别为内部或外部命令,可执行程序或批处理文件。你可能需要将命令运行为 C:\Windows\system32\netstat.exe 而不是 nestat。 - sk8asd123

2

我也在使用VirtualBox时遇到了与Java进程相关的同样问题。

我的情况是由于Windows Update补丁KB4338818(Windows 7 x64)中存在的一个错误导致的。

我通过以下方法解决了这个问题:

  • 卸载Windows Update补丁KB4338818
  • 安装Windows Update补丁KB4338821

2

对我来说,它的工作方式是我必须杀死父进程。找到父进程并将其杀死。

最初的回答

taskkill /IM "parent_process_name.exe" /T /F

2
一些Exe文件依赖于某些服务, 因此您需要先找到相应的服务并停止它。

4
如何解决这个问题?在任务管理器中没有显示与devenv.exe相对应的任何服务。现在我正在尝试重新创建这个问题,一旦完成,我将使用进程资源管理器来查找可能持有它的服务。 - dushyantp

2

当使用taskkill命令无法生效时

taskkill /f /t /pid 14492

ERROR: The process with PID 14492 (child process of PID 7992) could not be terminated.
Reason: There is no running instance of the task.

简单的 tskill 对我来说已经足够好用了。

tskill 14492

tskill 是唯一对我有效的方法。感谢这个答案。 - Eric

1

正如Francis所提到的,一些进程由于未处理的I/O请求而无法终止。

"未处理的I/O请求"

根据我的经验,我曾遇到过有缺陷的图形驱动程序导致我的游戏崩溃并无法关闭的情况,作为最后的手段,我禁用了图形驱动程序,进程最终消失了。

如果您的应用程序正在等待来自驱动程序(例如wifi或图形)的资源,请尝试在设备管理器中禁用它们,您需要深入挖掘以查看它们挂起的位置。

当然,这并不是推荐的做法,但有时您已经没有什么好失去的了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接