![是否有可能阻止 Windows 7 强制关闭无响应的程序?](https://linux22.com/image/1283370/%E6%98%AF%E5%90%A6%E6%9C%89%E5%8F%AF%E8%83%BD%E9%98%BB%E6%AD%A2%20Windows%207%20%E5%BC%BA%E5%88%B6%E5%85%B3%E9%97%AD%E6%97%A0%E5%93%8D%E5%BA%94%E7%9A%84%E7%A8%8B%E5%BA%8F%EF%BC%9F.png)
Windows 7 在关闭它认为程序已停止响应的程序时似乎有点过于热心。有些程序需要很长时间才能关闭,我觉得它应该再等一段时间再决定是否停止运行。
有人能告诉我它用什么标准来判断一个程序是否冻结吗?
答案1
有几个标准。一般来说,未处理的异常是头号杀手。还有其他错误,但它们非常技术性。
第二,如果未检索发送给应用程序的消息,则应用程序将变得无响应。Windows 为每个应用程序的消息附加一个计时器。如果没有处理,那么您就会收到无响应的消息。
三、应用程序还可以明确地告诉 Windows 在出现某些非致命错误时终止应用程序进程。这通常是为了防止数据损坏。
哪个程序挂起了?
编辑:
显然,是有一种方法可以关闭它。巧合的是,我在阅读 perfmon 团队博客时遇到了本文。它给出了明确关闭应用程序“重影”的步骤。我也会剪切并粘贴这些步骤。
要下载应用程序兼容性工具包,请访问以下 Microsoft 网站:
http://msdn2.microsoft.com/en-us/library/aa286552.aspx
要创建自定义应用程序兼容性数据库:
安装并运行兼容性管理员工具。
右键单击“自定义数据库”,然后单击“新建”。
右键单击新数据库,然后单击“重命名”。
输入 noghost 作为数据库的名称。(您可以随意命名。)
右键单击“新数据库”,单击“新建”,然后单击“应用程序修复”。键入要修复的程序的名称。
输入程序制造商的名称。
找到并选择适当的程序 (.exe) 文件。
点击下一步。
在兼容模式窗口中,单击无,然后单击下一步。
在兼容性修复列表中,单击 NoGhost。
单击“测试运行”或“完成”。单击“测试运行”将使用应用程序兼容性设置启动程序。单击“完成”将兼容性修复程序添加到您的数据库。
在文件菜单上,单击保存以保存数据库。或者,将数据库复制到 C:\Windows\AppPatch 文件夹。
右键单击数据库,然后单击“安装”。或者运行 sdbinst c:\windows\apppatch\noghost.sdb -q 命令来安装数据库。
我自己验证了这些步骤...
答案2
您可以通过更改以下项来更改 Windows 将应用程序(或服务)视为无响应所需的超时时间:WaitToKillAppTimeout入口 (WaitToKillService超时针对服务)。这是针对每个用户的设置。
默认值为 20,000 毫秒(20 秒),因此您可以尝试将其设置为 30,000 或其他值。此外,您应该能够Cancel
单击结束任务对话以根据需要为其提供更多时间。
答案3
Windows 7 不会在超时之前尝试关闭无响应的程序,除非您单击该程序或尝试在程序完成正在执行的任务之前执行其他任务。如果您只是等到程序完成后再单击它来启动其他任务,您的运气可能会更好。
更改超时不会改变该行为 - 它仅控制 Windows 本身等待的时间,而不是用户等待的时间。