要获取Windows系统自首次安装以来所有开机时段的累计运行时长,需综合分析事件查看器中的启动(ID 6005)与关机(ID 6006/6008/1074)事件时间戳,逐段计算并累加各次运行时长;PowerShell可自动化配对与求和;systeminfo和注册表提供安装时间基准;第三方工具可解析归档.evtx日志以补全历史数据。

如果您需要了解Windows系统自首次安装以来所有开机时段的累计运行时长,而非仅当前会话的连续运行时间,则需综合分析历史启动与关机事件。以下是获取系统总运行时间的多种方法:
一、通过事件查看器提取全部开机与关机事件
事件查看器完整记录了每次系统启动(ID 6005)、正常关机(ID 6006)、意外断电(ID 6008)及计划重启(ID 1074),通过时间戳差值可逐段计算各次运行周期,并累加得出总运行秒数。
1、按Win + R,输入eventvwr.msc并回车,打开事件查看器。
2、在左侧导航树中,依次展开Windows 日志 → 系统。
3、在右侧操作面板点击“筛选当前日志”。
4、在“事件ID”栏中输入:6005,6006,6008,1074(英文逗号分隔),点击确定。
5、在结果列表中,按TimeCreated列升序排列,逐条检查事件顺序:每个6005事件后若紧接6006,则构成一次完整运行周期;若6005后为6008,则该段运行以异常终止,仍计入总运行时长;未配对的6005视为当前仍在运行的会话。
二、利用 PowerShell 计算累计开机时长
PowerShell可对筛选后的事件进行结构化处理,自动配对相邻的6005(开机)与后续最近的6006/6008(关机/断电),并计算每段运行时间差,最终求和得到总运行秒数。
1、以管理员身份启动Windows Terminal(PowerShell)。
2、输入以下命令并回车:Get-WinEvent -FilterHashtable @{LogName='System'; ID=6005,6006,6008,1074} -ErrorAction SilentlyContinue | Sort-Object TimeCreated。
3、将输出保存至变量以便处理:$events = Get-WinEvent -FilterHashtable @{LogName='System'; ID=6005,6006,6008,1074} -ErrorAction SilentlyContinue | Sort-Object TimeCreated。
4、运行脚本逻辑提取所有有效运行区间并累加:$uptimeSeconds = 0; for ($i = 0; $i -lt $events.Count - 1; $i++) { if ($events[$i].Id -eq 6005) { $start = $events[$i].TimeCreated; $end = $null; for ($j = $i + 1; $j -lt $events.Count; $j++) { if ($events[$j].Id -in 6006,6008) { $end = $events[$j].TimeCreated; break; } } if ($end) { $uptimeSeconds += ($end - $start).TotalSeconds; $i = $j; } } }; $uptimeSeconds。
三、使用 systeminfo 命令结合日志推算历史总运行时间
systeminfo本身不提供历史累计值,但其输出中的“系统安装日期”可作为时间起点,配合事件查看器中最早一条6005事件的时间戳,可估算系统生命周期内最大可能总运行时长(即从安装日起所有已记录开机时段之和)。
1、按Win + R,输入cmd并回车,启动命令提示符。
2、输入命令:systeminfo | findstr "系统安装日期" 并回车。
通过 handsfree-windows CLI控制 Windows 本机应用 (UIA) 和浏览器 (Playwright) 的引导技能,用于自动化或测试桌面应用。
3、记录输出中“系统安装日期”字段的值,例如“系统安装日期: 2023/08/15, 14:22:03”。
4、返回事件查看器,在筛选结果中定位最早一条ID为6005的事件,其TimeCreated即为可追溯的最早开机时刻。
5、若最早6005时间晚于系统安装日期,说明此前日志已被清除;此时应以最早6005时间为起始点开展后续累加计算。
四、借助第三方工具解析Windows日志数据库
Windows事件日志以二进制.evtx格式存储于%SystemRoot%\System32\winevt\Logs\,原生命令行难以直接解析全部历史数据;专用日志分析工具可批量读取多个.evtx文件,重建完整开关机序列并输出总运行时长统计报表。
1、下载并安装支持.evtx解析的开源工具如EvtxECmd或商业软件Log Parser Studio。
2、以管理员权限运行工具,指定日志路径:%SystemRoot%\System32\winevt\Logs\System.evtx 及归档日志目录(如存在)。
3、配置查询条件筛选事件ID为6005、6006、6008、1074的全部记录。
4、导出CSV格式结果,用Excel或PowerShell导入后执行时间差累加运算,获得总秒数。
五、通过注册表读取系统安装时间辅助估算
注册表项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\InstallDate存储系统安装时间戳(Unix纪元秒数),可用于校验systeminfo输出,并作为累计运行时间计算的理论上限基准。
1、按Win + R,输入regedit并回车,打开注册表编辑器。
2、导航至路径:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion。
3、在右侧窗格查找名为InstallDate的DWORD(32位)值。
4、双击该值,将显示的十六进制数值转换为十进制,再转换为UTC时间;例如值为0x64b8c9f3,转为十进制为1689999859,对应UTC时间2023/06/20 10:24:19。
5、将该UTC时间转换为本地时区后,与当前时间相减,所得差值即为系统自安装以来的理论最大可能总运行时长(未扣除所有关机时段)。

















