检测Windows重新启动是否由于Windows更新

我的电脑上的一些应用程序已经进行了检测,重新启动是否由Windows Update完成。 这是可观察到的,因为它们在自动Windows Update重新启动后重新启动。

这是非常有用的,因为这些应用程序重新加载更改,甚至未保存的更改或恢复选项卡(浏览器的情况下)。 这样做的应用程序的例子:

  • 谷歌浏览器
  • Microsoft Visual Studio
  • 微软油漆

在所有情况下,应用程序保存重启之前的状态

(我的电脑实际上是从待机状态自动唤醒的,并且在安装更新的时候重新启动了自己,太糟糕了,这样做不会回到待机状态。)

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

问题我怎么才能得到Windows最后一次重启的原因可能看起来像重复,但没有答案说任何更新。

我用C#编写代码,所以在C#中的答案会很有帮助,但是我也可以读C和C ++。

请参阅应用程序重启 :

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

和:

或者如果计算机需要重新启动作为更新的结果。

事实之后,应用程序没有检测到重新启动的原因 – 它们已经被设计为使用这个API。 没有(据我所知)为此托管的API。


由于软件更新而关闭应用程序时,保存数据和应用程序状态只需几次点击。 再次,没有托管的API。

通常情况下,在Windows重新启动时,通过使用shutdown.exe和/ g标志执行重新启动,此标志在重新启动之前保存所有注册的正在运行的程序的状态。 你想要做的是注册你的应用程序重新启动。 有一个很好的示例与MSDN文档。 它在C#和C ++中可用。