平台:Windows 2008服务器
遇到使用pyinstaller生成的单文件exe不会清除其关联的临时文件夹的问题。阅读有关此http://pythonhosted.org/PyInstaller/的信息,并发现如果exe没有正常关闭,它将不会删除其关联的临时文件夹。在此之后,我与设置exe的IT人员进行了交谈,并被告知该应用程序在系统启动时启动,每晚都会重启系统。
我试图找出Windows上的系统重新启动是否会正常退出正在运行的应用程序,但无法找到与此相关的任何内容。
有没有人知道Windows是否会在计划的系统重启时正常退出正在运行的应用程序?
提前致谢
答案 0 :(得分:2)
是的,确实如此,但implementation slightly differs between XP\Vista。您还可以更改关机计时器和自动关闭行为:How to Specify WaitToKillAppTimeout to Speed Up Shut Down Time in Windows。
在Windows XP中,每个正在运行的应用程序都会发送WM_QUERYENDSESSION 关机时的消息。应用程序可以返回TRUE以指示 它们可以被关闭,或者表示它们不应该是FALSE 关闭(例如,因为这样做会导致用户丢失数据或 销毁被烧毁的CD)。如果应用程序在大多数情况下返回FALSE 案例,关闭将被取消(和取消的应用程序 使用wParam == FALSE发送关闭WM_ENDSESSION。
应用程序还可以按顺序延迟响应WM_QUERYENDSESSION 显示用户询问用户想要做什么的UI。例如,何时 记事本有未保存的数据并显示"您要保存您的 数据&#34?;在关机期间对话,这就是它正在做的事情。默认情况下, 应用程序可以延迟响应WM_QUERYENDSESSION最多5个 秒。 5秒后,Windows XP将显示一个对话框 表示应用程序没有响应并允许用户 终止它。直到用户响应此对话框,应用程序 可以阻止WM_QUERYENDSESSION(并因此关闭) 下去。
用户强行关闭的能力
在Windows XP中,UI用于 阻止应用程序允许用户取消关闭或 终止阻止应用程序。如果后续申请也 块关闭,系统为每个阻塞显示相同的UI 应用。这对许多用户来说是令人沮丧的,他们在关闭时会这样做 下来,"只是想"他们的电脑要关掉。 Windows Vista会 通过允许用户终止阻止应用程序来解决这个问题 关机"强有力。"在强制关机中,Windows将发送 带有ENDSESSION_CRITICAL标志的WM_QUERYENDSESSION应用程序。如果 一个应用程序响应FALSE,Windows将继续关闭 取消它,并将发送应用程序WM_ENDSESSION。如果 应用程序超时响应WM_QUERYENDSESSION或 WM_ENDSESSION,Windows将终止它。将不再允许取消静音
在Windows XP中, 允许应用程序否决WM_QUERYENDSESSION而不显示 任何UI指示他们需要取消关闭的原因。这些"沉默 关机失败"对用户来说非常令人沮丧,他们经常会这样做 一两分钟才意识到关机失败,因为没有用户界面 显示。 Windows Vista将通过显示消除这种可能性 UI即使应用程序否决了WM_QUERYENDSESSION。某些类型的应用程序将不再允许阻止 关掉。在关机时,Windows Vista将检查每个是否正在运行 应用程序没有响应(应用程序定义为不响应 响应,如果它没有响应其中的任何窗口消息 最后5秒),如果是,则自动终止它。
Windows Vista也不允许使用控制台应用程序或应用程序 没有可见的顶级窗口来阻止关机。在大多数情况下 在这种情况下,此类应用程序对关机时的用户不太重要 具有可见顶级窗口的应用程序。如果申请 没有可见的顶级窗口阻止通过否决关闭 WM_QUERYENDSESSION,或响应时间超过5秒 WM_QUERYENDSESSION或WM_ENDSESSION,Windows将自动执行 终止它。
但是,如果没有可见顶级窗口的应用程序使用 新API主动指示它需要阻止关闭, Windows Vista不会自动终止它,而是会自动终止它 将其视为具有可见顶级的应用程序 窗口。