检测到Windows在重新启动后崩溃或powerfailure

有谁知道是否有可能检测到最后一次启动是否在Windows电源故障之前?

我想检测这个的原因是知道什么时候重新扫描我经常使用我的服务在磁盘上修改的文件。

如果有正常的启动,我可以确定closures顺利,内存文件缓冲区中的数据被刷新到磁盘。

作为一个简单的实现,将CreateFile与FILE_FLAG_DELETE_ON_CLOSE(不知道紧随其后FlushFileBuffers只是为了确定)不起作用?

如果系统关闭干净,应用程序将退出,文件句柄将被关闭,操作系统将删除该文件。

如果电源故障或世界结束,操作系统将无法关闭任何句柄或删除任何文件。 因此,系统重新启动后,该文件仍然存在。

检测电源故障只会涵盖异常终止的一个可能的原因。 这样做的安全方法是在启动时创建标记文件,然后在干净关闭时将其删除。 如果标记文件在下次启动时存在,则您知道您的服务没有彻底终止。

如果只想查找powerloss,则阅读事件日志将会告诉您最后一次关机是否意外。

为什么不检查你的进程是否优雅地终止? 在注册表或文件系统中放置一些特殊的标记,这将意味着,你的进程仍然在工作,并在优雅关闭时删除它。 然后在每次启动时检查它。