Answers:
每次启动和关闭都记录在事件日志中。打开事件查看器,然后转到系统日志部分。如果Filter Current Log
按事件编号12和13 过滤这些记录(使用右侧的按钮),则只应获取通知系统关闭和启动的事件。
事件ID 12是系统正在启动,事件ID 13是系统正在关闭。它还提供了事件在事件本身中记录的确切时间。
您可以让您的应用程序对事件ID为12的事件进行计数,这应该可以为您提供所需的信息。
这是另一种方式:SMART
如今,绝大多数硬盘驱动器都存储SMART信息。您可能会对以下两项信息感兴趣:04 Start / Stop Count 12 Power Cycle Count
请查看有关SMART 的Wikipedia文章,还可以查看smartmontools的文档。
smartmontools是一个开源项目,可以在CLI中查询此数据,或者周围还有其他程序可以使用各种GUI来获取此数据:Wikipedia SMART工具列表
我写了两个简短的脚本,它们可以计算计算机打开的次数。
不幸的是,没有用于重启的事件日志,仅用于Windows启动和关闭时的事件日志。
这些脚本搜索event 12
Windows启动时记录的事件日志。然后,它告诉您已计数了多少次。
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