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



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

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

  • 谷歌Chrome
  • Microsoft Visual Studio
  • Microsoft Paint

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

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

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

"我如何才能获得Windows上次重新启动的原因"这个问题似乎是重复的,但没有回答任何关于更新的问题。

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

请参阅应用程序重启:

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

和:

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

应用程序在事后没有检测到重新启动的原因——它们被设计为使用这个API。目前(据我所知)还没有一个可管理的API。


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

通常在Windows重新启动时,它会使用shutdown.exe和/g标志来执行重新启动,该标志会在重新启动之前保存所有注册的正在运行的程序的状态。您要做的是注册您的应用程序以重新启动。MSDN提供了一个很好的示例和文档。它有C#和C++两种版本。

最新更新