首页 > 解决方案 > Windows 快速启动 - 如何确定上次启动/重新启动发生的时间

问题描述

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

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

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

标签: c#windows

解决方案


您可以过滤系统事件日志

获取所有日志

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”过滤事件 ID

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

推荐阅读