如果Windows Update强制重启,如何重新启动我的应用程序?

时间:2009-07-02 21:01:43

标签: c# windows winforms windows-update

在办公室,当我离开的时候,我很少注销或重启。我只是锁定我的工作站并回家,留下我所有的开发工具,就像我离开它们一样。

如果Windows-Update滚动并在半夜重新启动我的机器,我只是有点恼怒,因为当我第二天早上回来时,我运行的任何MS Office应用程序或Visual Studio实例都已经有了自动重启,打开我可能正在处理的任何文件/项目/解决方案。

我的问题是:如何让我的Windows窗体应用程序(C#)执行此操作?如果系统自动重新启动,我的应用程序是否有某种方式“注册”它想要重新启动?

4 个答案:

答案 0 :(得分:9)

认为 RegisterApplicationRestart Win32 API函数可能就是你所追求的,它是Restart Manager API的一部分。

答案 1 :(得分:4)

如果您使用的是Windows Vista或Windows 7,则可以使用托管重新启动和恢复API。该页面上的链接也指向一些有用的博客条目

http://channel9.msdn.com/posts/DanielMoth/Windows-Vista-Restart-amp-Recovery-APIs-from-managed-code/

答案 2 :(得分:2)

一种简单的方法是在以下注册表项中添加一个条目:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce

只需创建一个包含应用程序路径的值(可选择包括命令行参数)。该应用程序将在下次启动时运行,然后该值将被删除。

答案 3 :(得分:0)

步骤1:找出一种区分Windows触发重启和标准重启的方法。一种解决方案是尝试预处理messages。对于Windows触发的重启,它们可能不同......或者至少在某些情况下它们在Vista中:/

步骤2:如果您检测到它是由Windows触发的重启,请添加预定的一次性任务。