15

在办公室,当我晚上离开时,我很少注销或重新启动。我只是锁上我的工作站然后回家,把我所有的开发工具留在原处。

如果 Windows-Update 在半夜通过并重新启动我的机器,我只会有点生气,因为当我第二天早上重新登录时,我运行的任何 MS Office 应用程序或 Visual Studio 实例都已经自动重新启动,打开我可能一直在处理的任何文件/项目/解决方案。

我的问题是:如何让我的 Windows 窗体应用程序 (C#) 做到这一点?如果系统自动重新启动,我的应用程序是否可以通过某种方式“注册”它想要重新启动?

4

4 回答 4

9

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

于 2009-07-02T21:06:48.740 回答
4

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

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

于 2009-07-02T21:09:51.917 回答
2

一种简单的方法是将条目添加到以下注册表项:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce

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

于 2009-07-02T21:43:51.710 回答
0

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

第 2 步:如果您检测到这是 Windows 触发的重新启动,请添加计划的一次性任务。

于 2009-07-02T21:37:57.617 回答