Windows 8.1:如何确定“真实”正常运行时间?

Windows 8.1:如何确定“真实”正常运行时间?

请仔细阅读;这不是通常的正常运行时间问题。

我倾向于不关闭我的电脑本身,而是让它进入睡眠状态。它使启动时间更快,并允许我使用 WOL。各种“uptime”方法(sysinfo、uptime.exe、任务管理器等)将显示自上次完全启动以来的时间,这意味着睡眠时间被考虑在内。我正在寻找真的正常运行时间;也就是说,仅自上次启动以来我的 PC 处于唤醒状态的时间。

答案1

没有软件可以做到这一点,所以唯一能做到这一点的方法是编写一个脚本,基本上每秒(或每分钟)给变量增加 1,并有办法读取变量的值。如果您的 PC 处于休眠/睡眠等状态,则脚本不会运行,因此计数器不会增加。

如果这样的脚本在后台持续运行,很可能会对系统产生影响,所以问题是,你有多想要这样做?

(对脚本产生影响的原因)脚本运行的时间越长,数字就越高,而非常高的值意味着需要更多的内存来存储。(谈论不能是整数(65535)的值,但我想如果将其提高到这么高,您的系统必须启动并运行数天/数周。当然,您可以编写脚本来计算天数并重置可以消除这种情况的值,但如果您的脚本在其周期中经历更多的代码,这本身也会对它产生影响,即使影响很小。

答案2

Windows 生成从睡眠状态唤醒的系统事件(事件 ID:1,来源:Power-Troubleshooter)。此事件包含睡眠和唤醒时间。

唤醒事件

来源:唤醒源 - 读取事件查看器日志 - Windows 7 帮助论坛

要确定您的“真实正常运行时间”值,请确定上次启动时间(来自您提到的来源),然后从任何后续唤醒事件中减去睡眠时间。

注意:您可以创建一个应用程序来使用 .NET 库查询事件日志(超级用户的主题外)。

答案3

您对“真正正常运行时间”的定义有多灵活?LPChip 的答案 是编写由工作站锁定和工作站解锁触发的计划任务,然后进行显而易见的计算。

如果数学计算还不明显的话:

  1. 跟踪两个值:“逻辑”启动时间和累计正常运行时间。每次只有一个值有效。因此,可以说,您还需要一个标志来跟踪其中哪个值有效,尽管这实际上可以通过上下文来确定。
  2. 我猜您还想要一个在系统启动时运行的事件,或者有其他机制将“逻辑”启动时间初始化为实际启动时间。
  3. 当工作站锁定时,从当前时间中减去逻辑启动时间并将其保存为累计正常运行时间。
  4. 当工作站解锁时,从当前时间中减去累计启动时间并将其保存为逻辑启动时间。
  5. 根据要求,从当前时间中减去逻辑启动时间,并将其报告为“真实”启动时间。(这将为您提供 PC 解锁的总时间。)

例如,

  1. 如果您在上午 9 点进行硬启动,则会将上午 9 点保存为逻辑启动时间。
  2. 如果你在中午锁定机器,这样可以节省 3 小时(中午 - 上午 9 点)作为累计正常运行时间。
  3. 如果您在下午 1 点解锁机器,则会将上午 10 点(下午 1 点 - 3 小时)保存为逻辑启动时间。
  4. 如果您要求在下午 6 点启动,则会报告 8 小时
    (下午 6 点 - 上午 10 点 =(中午 - 上午 9 点)+(下午 6 点 - 下午 1 点)。)

如果您能弄清楚如何触发任务在睡眠和唤醒时运行,那么就这样做吧,它就会得到您想要的结果。(但让机器进入睡眠状态会触发 Lock 任务,我假设您已将系统配置为需要在唤醒后解锁。)

相关内容