终止没有关联进程的 Windows 应用程序

终止没有关联进程的 Windows 应用程序

我试图提前关闭的自动编译器最终死机了,而不是关闭。我没有关闭它,而是忽略了它,继续工作。几分钟后,这种情况再次发生,我有两个死机窗口。

我进入任务管理器并终止了 cmd.exe,但它只删除了一个窗口。现在,单击死窗口上的“转到进程”只会让我看到进程列表中的第一个,而不管它是什么。所以基本上我有一个死的 cmd.exe 窗口,它实际上没有附加 cmd.exe,我不知道如何终止它。它在那里已经 3 天了,它开始让我烦心了。

编辑:我尝试使用 Process Explorer,但它只是告诉我找不到该进程。

答案1

Process Explorer 能够找到它。起初我不认为它能正常工作,因为拖放功能没有找到它,但我能够通过搜索暂停进程列表找到它。

答案2

微软的系统团队有一款出色的工具包,名为 PSTools。他们基本上将 *nix ps 工具包移植到了 Windows 上。

工具包中对您来说可能有用的特定工具是 pskill。Pskill 可以杀死 svchost.exe 甚至 csrss 安全线程,如果您杀死 csrss,它将使系统蓝屏,我指出这一点只是为了说明该工具的强大功能。也许它会杀死您“挂起”的 cmd.exe 或您在 cmd.exe 中运行的进程的名称。

这里是关联到工具包。

答案3

如果窗口无法消失,这并不总是该窗口所属进程的错误。这可能是窗口下方内容所属进程的错误。进程不负责使其窗口消失(除了调用 DestroyWindow)。相反,拥有应该显示的窗口的进程负责重新绘制其窗口。

例如,Explorer(不是 IE,只是 explorer.exe)拥有桌面。假设某个应用程序在您的桌面上有一个窗口,窗口下面除了桌面之外没有其他东西。如果您单击窗口的红色 X,并且进程调用 DestroyWindow,Explorer 应该会收到消息并重新绘制应该显示的桌面部分。(考虑到即将消失的窗口不知道、也无法知道它下面是什么……所以它不能重新绘制那些东西。

因此:如果进程(其窗口下除了桌面外什么都没有)消失但其窗口仍保留在那里,则通常意味着 Explorer 已挂起,或者至少拥有桌面的 Explorer 线程已挂起。(是的,桌面是一个窗口,只是缺少通常的装饰。)

一种解决方法是使用任务管理器终止 explorer.exe 并启动另一个(从 TM 的文件菜单,运行...,explorer.exe)。在这种情况下,您可以尝试这样做。

相关内容