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