是否有任何“引导会话 ID”或(可靠的)“引导时间戳”?对于安装,我需要检测确实发生了预定的重启。
我想我可以用 做一个假人MoveFileEx()
,MOVEFILE_DELAY_UNTIL_REBOOT
但我确实希望更容易一些。
(我们必须安装第 3 方软件包,该软件包在修复/更新后有时会出现异常行为。在这种状态下,访问设备甚至可能会锁定系统)
(Windows XP、Vista、7)
对于这样的事情,WMI(Windows Management Instrumentation)通常是一个很好的起点。我知道您可以直接通过它获得当前的正常运行时间,这可以让您确定机器最近是否重新启动。
这是一篇包含一些代码示例的博客文章:http: //blogs.technet.com/heyscriptingguy/archive/2004/09/07/how-can-i-tell-if-a-server-has-rebooted。 aspx
根据您的实现语言,您可能只想从 vbscript 中提取查询代码。
显然,Windows 相当于“正常运行时间”。这里有更多信息:http: //support.microsoft.com/kb/555737
据我了解,这应该告诉您系统启动了多长时间。这些信息能解决你的问题吗?
您可以在系统事件日志中搜索 EventLog 源中的事件 6009 - 这是每次重新启动后记录的第一个事件。
我认为这里已经给出了最好的答案:找出自从我的程序上次运行以来计算机是否重新启动?
这似乎是最简单的方法。用于GlobalFindAtom()
查看它是否存在并创建它,GlobalAddAtom()
如果不存在,则使用 。它会在你的程序执行之后持续存在。如果您的应用程序再次运行,并看到原子存在,那么它不是自重启后的第一次运行。
如果计算机重新启动,则原子将不存在,这表明这是您的程序自重新启动以来的第一次运行。