8

我的 PC 上的一些应用程序一直在检测是否由 Windows 更新完成了重新启动。这是可以观察到的,因为它们在自动 Windows 更新重新启动后重新启动。

这非常有用,因为这些应用程序会重新加载更改,甚至是未保存的更改或恢复选项卡(在浏览器的情况下)。执行此操作的应用程序示例:

  • 谷歌浏览器
  • 微软视觉工作室
  • 微软油漆

在所有情况下,应用程序都会保存它们在重新启动之前所处的状态。

(我的电脑实际上从待机状态自动唤醒,并在安装更新时自行重启。太糟糕了,这样做后它没有回到待机状态。)

我的问题是:如何以编程方式检测这种重启?在重新启动之前似乎可以可靠地检测到它。

How can I get the Windows last reboot reason这个问题看起来像是重复的,但没有任何关于更新的答案。

我用 C# 编写代码,所以用 C# 回答会很有帮助,尽管我也可以阅读 C 和 C++,例如。

4

2 回答 2

4

请参阅应用程序重启

应用程序可以使用应用程序恢复和重新启动 (ARR) 在应用程序因未处理的异常退出之前或应用程序停止响应时保存数据和状态信息

和:

或者如果计算机因更新而需要重新启动。

应用程序在事后没有检测到重新启动的原因 - 它们已被设计为使用此 API。没有(据我所知)用于此的托管 API。


当应用程序由于软件更新而关闭时,只需单击几下即可保存数据和应用程序状态。同样,没有托管 API。

于 2012-03-10T16:18:01.813 回答
0

通常当 Windows 重新启动时,它通过使用 shutdown.exe 和 /g 标志来执行重新启动,该标志保存所有已注册的运行程序在重新启动之前的状态。您要做的是注册您的应用程序以重新启动。有一个很好的示例,其中包含 MSDN 的文档。它在 C# 和 C++ 中可用。

于 2012-03-10T17:05:40.043 回答