如何终止“缺少实例”的任务?

如何终止“缺少实例”的任务?

Spotify 首先自行终止了运行,但是“它的某些东西”一直徘徊不去,可以检测到 PID 为 8664 的任务,并且从 RAM 使用率不时变化的事实来判断 - 它“做了一些事情”。

现在首先,这个过程使我无法听音乐,因为 Spotify 由于这个实例而拒绝重新启动。

所以我尝试删除这个进程。但任务管理器和 taskkill 命令(当然是以管理员身份)都无法成功。

taskkill 至少给了我一个“理由”,我将在这里翻译。

>taskkill /pid 8664 /f
>taskkill /im spotify.exe /f

都给了:

ERROR: The process "spotify.exe" with PID 8664 could not be terminated.
Reason: There is currently no instance executed by this task.

我想知道这意味着什么以及是否还有其他选择可以终止这一进程。

(Windows 7 专业版 64 位)

答案1

该进程几乎肯定已经死亡,即它不再执行任何代码。但是,直到它的每个句柄和每个线程都关闭后,有关它的记录才会消失。您可能有另一个程序保持这样的句柄打开(防病毒程序可能是罪魁祸首),或者它可能在死亡之前向现在挂起的内核模式驱动程序发出了请求(我曾经有一个 CD 驱动器,它经常导致这种情况)。进一步阅读:“为什么有些进程被终止后仍留在任务管理器中?”“为什么所有这些过程都在死亡边缘徘徊,是什么让它们保持活力?”

Spotify 拒绝再次启动,因为它发现其自身的副本已在运行,但它显然只是在寻找另一个名为 的进程spotify。(用 Raymond Chen 的话来说,单实例应用程序本身就是拒绝服务。)解决此问题的最简单方法是重新启动计算机,因为这将清除所有句柄和簿记。

但如果你真的想自己修复它请下载进程探索器,这是 Sysinternals 提供的一款非常有用的免费实用程序。(我与它没有任何关系。)运行它,无需安装,然后接受 EULA。在文件下,选择显示所有进程的详细信息;这会导致 Process Explorer 以管理员身份重新启动。然后,在“查找”下,选择查找句柄或 DLL. 输入僵尸进程(也就是尸体进程)的名称,然后按“搜索”。

搜寻句柄

Process 和 PID 列告诉您哪个进程拥有该句柄。Type 列指示它是什么类型;我们对以下类型的句柄感兴趣过程或者线。名称列会告诉您句柄的用途。(许多进程拥有自己的句柄;如果拥有句柄的应用程序在内核模式下顺利结束,这些句柄就会消失。)

危险:关闭应用程序真正需要的句柄是让应用程序崩溃的好方法。如果可能,请退出拥有该句柄的应用程序。但如果做不到,或者您只是想用锤子敲东西……

单击该搜索窗口中的条目以打开句柄窗格。右键单击该窗格中新突出显示的条目,然后选择关闭句柄将它消灭掉。

一旦所有句柄都关闭,该进程就会消失。

相关内容