如何查看 Windows Seven 重启的频率?

如何查看 Windows Seven 重启的频率?

我应该在系统或注册表的哪里查找有关 Windows 已重启次数的数据?我想创建一个使用此信息(自 OOBE* 过程以来 Windows 已重启次数)的应用程序来实现特定功能。

我确信微软可能在某个地方实现了这个功能。我正在考虑注册表项或类似的东西。

*OOBE - 开箱即用体验,这是您首次启动 Windows 并设置用户、密码和计算机名称时发生的过程。

答案1

每次启动和关闭都会记录在事件日志中。打开事件查看器,然后转到系统日志部分。如果您Filter Current Log按事件编号 12 和 13 过滤这些记录(使用右侧的按钮),您应该只会收到系统关闭和启动时通知的事件。

事件 ID 12 表示系统启动,事件 ID 13 表示系统关闭。它还在事件本身中提供了记录事件的准确时间。

您可以让您的应用程序计算事件 ID 为 12 的事件数,这应该可以满足您的要求。

答案2

我找到了答案。

查找:

"HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters\BootId" 

您将看到的十进制值是系统已重启的次数。

答案3

这是另一种方法:SMART

如今,绝大多数硬盘都存储了 SMART 信息。您可能对以下两条信息感兴趣:04 启动/停止计数 12 电源循环计数

查看维基百科文章关于 SMART 以及可能的 smartmontools 文档。

smartmontools 是一个开源项目,可以在 CLI 中查询这些数据,或者还有其他程序可以通过各种 GUI 获取这些数据:维基百科 SMART 工具列表

答案4

我编写了两个简短的脚本,可以计算计算机开机的次数。

不幸的是,没有专门用于重启的事件日志,只有 Windows 启动和关闭时的事件日志。

这些脚本会搜索 Windows 启动时记录的事件日志event 12。然后它会告诉您它已经计算了多少次。

VBS 脚本:计算计算机开机次数

count = 0
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colLoggedEvents = objWMIService.ExecQuery _
("Select * from Win32_NTLogEvent Where Logfile = 'System'" _
& " and EventCode = '12'")
For Each objEvent in colLoggedEvents
count = count + 1
Next
wscript.echo "Number of times operating system has started:   " & count

VBS 脚本:远程计算计算机开机次数:

count = 0
strComputer=InputBox ("Enter the network name for the remote computer")
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colLoggedEvents = objWMIService.ExecQuery _
("Select * from Win32_NTLogEvent Where Logfile = 'System'" _
& " and EventCode = '12'")
For Each objEvent in colLoggedEvents
count = count + 1
Next
wscript.echo "Number of times operating system has started:   " & count 

来源VBS 脚本 – 计算计算机开机次数

相关内容