繁体   English   中英

Windows 快速启动 - 如何确定上次启动/重新启动的时间

[英]Windows Fast Startup - How to determine when the last boot/reboot occured

在 PC 上启用“快速启动”时,.Net 中是否有一些方法可以用来确定 Windows PC 上次关机的时间。 如果最终用户选择 Shutdown 而不是 Restart,那么到目前为止我在 StackOverflow 上找到的解决方案都没有给我这些信息。

当启用了“快速启动”的 Windows PC 进入睡眠模式或关机时,“运行时间”和“LastBootUpTime”不会更新。

简而言之 - 有没有办法确定用户上次“关闭”计算机的时间?

您可以过滤系统事件日志

获取所有日志

foreach (var log in EventLog.GetEventLogs())
    if(log.Log == "System")
        foreach (EventLogEntry entry in log.Entries)

要获取启动日志,请使用 6009 过滤事件 ID( 此答案中提到)

(entry.InstanceId & 0x3FFFFFFF) == 6009

要获取唤醒日志,请使用 1 过滤事件 ID,使用“Microsoft-Windows-Power-Troubleshooter”过滤源

(entry.InstanceId & 0x3FFFFFFF) == 1 && entry.Source == "Microsoft-Windows-Power-Troubleshooter"

假设您的意思是要查找启用快速启动时计算机上次启动的时间?

  1. 从 .NET 查询事件日志。 还没有这样做,但看起来你使用 System.Diagnostics.Eventing.Reader 命名空间 [来自谷歌搜索:-)]

  2. 查找事件 ID 27(引导事件)并检查引导类型:

0x0- 从完全关闭的冷启动 0x1- 混合启动(快速启动) 0x2- 从休眠状态恢复

即如果它是从快速启动启动,那么您需要查找事件 ID 27 + 启动类型 0x1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM