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个回答

103
如果有任何子进程被生成,你必须同时杀死它们以成功终止你的进程。
taskkill /IM "process_name" /T /F

/T = kills child process

/F = forceful termination of your process

30
在我的情况下,它打印出两个成功消息,但进程仍然存在。到底怎么回事? - CodeManX
3
如果那么容易就好了,不,这样没有帮助。我认为他的问题是由于无法终止的进程在某个循环(套接字、I/O、管道等)中,而主进程是系统进程,杀死它会使系统不稳定。在这种情况下,我建议首先了解该进程所在的循环。然后,如果该循环是与其他端点的网络交换,那么只需拔掉网络电缆或断开已建立的连接即可。 - user834850
114
我收到了一个“没有运行中的任务实例”的错误提示。那个进程似乎真的不想死! - demongolem
1
尽管我必须杀死“子进程的子进程”,但以下命令今天依然对我有所帮助:taskkill /f /T /PID 4172 ==> 错误:无法终止 PID 为 4172(PID 为 4724 的子进程)的进程。 ==> taskkill /f /T /PID 4724 ==> 完成 - Hoàng Long
2
太棒了,感谢下面提到的 /T 开关! - kayleeFrye_onDeck
显示剩余3条评论

65

对我来说,taskkill和powershell(kill)方法无效,仍然显示“访问被拒绝”。

我用下面这个方法就成功了:

wmic process where "name='myprocessname.exe'" delete

8
错误: 描述 = 无效查询 - user1133275
95
Windows-10。另外:ERROR: Description = Access denied(使用管理员控制台)。 - FractalSpace
2
谢谢!这对我卡住的npm非常有效。 - Eduardo Elias Saléh
2
这个在我的情况下仍然无法正常工作。我有一个卡在进程中的 Visual Studio,运行了命令并显示“正在删除实例 \MyMachine\ROOT\CIMV2:Win32_Process.Handle="6420"”,实例删除成功。但是5分钟后,我仍然可以在任务管理器列表中看到 VS 的 devenv.exe 进程。我猜除了重新启动外没有其他解决办法了。 - wctiger
4
想要补充一下我的看法,这是一个真正对我有用的命令,当其他命令失败惨败时。谢谢。 - XavierTheGreat
显示剩余9条评论

41

3
我所做的是将其关闭,然后重新启动。 - Gellie Ann
3
对我来说,电脑无法重新启动,在“正在重启…”屏幕上冻结,鼠标可以移动。我可以等待2个小时,然后必须手动按按钮关闭它。 - Marťas

38

在 Windows Server 2008 R2 上遇到相同的问题,无法通过任务管理器或 taskkill 解决。但是,以管理员身份运行的 Windows PowerShell 可以使用 "kill -id pid" 命令解决。


4
这对我有用……不过在进程实际消失之前好像有约30秒的延迟,所以一开始看起来好像失败了。在我的情况下,这是另一个应用程序在系统资源不足时程序性地创建的进程。Process Explorer、kill进程树和其他一些方法都无法奏效,但这个方法成功了。 - J. Paulding
4
对我没用,出现了无法终止进程等错误。 - rboy
@rboy。我知道这很老,但以防其他人看到这个问题,请按照我的方法操作。以管理员身份打开PowerShell,然后运行它。起初我没有以管理员身份运行它,结果告诉我无法执行。所以我以管理员身份运行它,然后它就可以工作了。 - Chris Jones
这对我在 Windows 10 上处理不当的 Windows 服务时有效。已经尝试过 CMD,在这种情况下,PowerShell 是正确的工具。 - ThetaSinner
5
等待超过2-3分钟后,我仍没有运气。目前对我来说,没有任何命令可用。 - Tarun Gupta

9

在我的情况下,经过数天的奋斗(VirtualBox和µTorrent进程都发生了这种情况),我发现它是由于网络驱动程序问题引起的,这是由Windows更新补丁KB4338818(Windows 7 x64)引起的。卸载该补丁后,一切都恢复正常。我只是认为这可能对其他人有用。


你是怎么发现更新引起了这个问题的?我觉得我永远也不会发现这个问题。^^' - das Keks
3
我发现在问题出现前,唯一改变的就是我的电脑做了更新。于是我查看了最后一次更新并阅读了更新说明,发现它看起来有点可疑。我回退了更新,以此来检查问题是否得到解决,结果是确实解决了。然后我在一些 Apache 论坛上读到,不记得是哪个了,说这个更新也给他们带来了麻烦。顺便提一下:截至 2018 年 8 月 10 日的最新 Windows 更新已经修复了与 KB4338818 相关的问题,因此可以重新安装了。 - Danita

9

我知道现在有些晚了,但执行 taskkill /im devenv.exe /t /f 应该能解决问题。其中的 /t 可以结束相关的子进程。


13
这对我似乎没有起作用。它显示成功了,但是这个过程仍然出现。 - Scott Whitlock
2
我也遇到了类似的问题,但是涉及微软FTP服务。它显示已终止,但仍在运行,我无法弄清楚。 - rboy
2
如果我使用/PID 17888而不是/IM devenv.exe,那么错误基本上会说17888是17880的子进程,而17880没有运行,因此无法被终止。 - Jesse Chisholm
这个可以运行,但请确保你正在使用管理员模式下的cmd。 - karan
对我没用,试图删除使用接近100%磁盘访问的Windows Defender进程。 - David Spector

6

我可以通过杀死与我想要结束的进程有关联的explorer.exe来解决这个问题。我猜测这也可能发生在进程通过钩子打开接口并被锁定的情况下。


1
我尝试了结束并重新启动explorer.exe,但是没有起作用。 - Scott Whitlock
当我执行 taskkill /IM "process_name" /T /F 命令时,响应的一部分是:(PID xxxx 的子进程),所以我检查了该 PID,发现它是 explorer.exe,重新启动它解决了我的问题。 - Facundo Colombier

6

tskill <pid>(或tskill.exe <pid>)是我在Windows 10上使用的唯一有效的本地命令,没有其他本地命令有效。

在我的情况下,我有一些chrome.exe进程,任务管理器的“结束任务”可以正常工作,但是没有taskkill /F /T /PID <pid>或powershell的kill -id <pid>有效(即使两个 shell 都以管理员身份运行)。

这非常奇怪,因为taskkill被认为是tskill更好的API和做更多的版本。

在我的情况下,为了杀死某个任务的所有实例,我使用了FOR /F "usebackq tokens=2 skip=2" %i IN (`TASKLIST /FI "IMAGENAME eq name_of_task.exe"`) DO tskill %i


1
这个方法对我很有效,其他的都没用。谢谢 :D - jk1990
11
对我没用,出现了“终止进程失败10576:访问被拒绝”的错误提示。 - twasbrillig
我也遇到了同样的情况。我不理解的是,为什么会这样呢?据说 taskkill 和 tskill 是一样的[在文档等方面更好]。如果有人能回答吗? - dvlper
1
似乎 Windows 10 中没有 tskill 命令。 - robertspierre
对我没用,试图删除使用接近100%磁盘访问的Windows Defender进程。 - David Spector
在Windows 10 Pro中,我用Java调用时有效。taskkill无法正常工作,所以这是我找到的解决方案。 - Mario

5

我曾经遇到过这个问题,唯一的解决方法是重新启动。

你可以尝试使用PowerShell: Get-Process devenv | kill

但如果其他方法都失败了,这种方法可能也会失败。 :-(


是的,很遗憾!对我来说也是如此。你有没有找到任何解决方案? - manocha_ak
在Win10上对我没用:PS D:\work\Projects\libtiff.net_bin-2.4.560.0> Get-Process NSPRip | kill PS D:\work\Projects\libtiff.net_bin-2.4.560.0> echo $? True PS D:\work\Projects\libtiff.net_bin-2.4.560.0> Get-Process NSPRip句柄 NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
0 0 56 20 0.00 41236 1 NSPRip
- zhaorufei

4
我要提供一个建议,因为我最近遇到了同样的问题,我尝试了所有可能的答案,但没有任何作用。我在使用命令提示符时会出现错误,例如:
ERROR: The process with PID 23908 could not be terminated. Reason: There is no running instance of the task.
Power shell也没有帮助,它只是执行命令,而进程仍在运行且没有响应。
直到我决定删除相关的".exe"文件。由于该文件处于活动状态,Windows不允许删除,但在警告窗口中,它给出了占用我想要终止的任务的进程名称。 我能够终止原始任务,从而消除错误进程。
如果没有解决方案可用,这绝对值得一试。

非常希望……删除命令没有起作用……访问被拒绝(即使是管理员)。 - Erik Aronesty

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