如何在 Windows 中查看系统总共开机了多少天 统计电脑累计运行时间
时间:2026-05-04 10:40:31 135浏览 收藏
你在学习文章相关的知识吗?本文《如何在 Windows 中查看系统总共开机了多少天 统计电脑累计运行时间》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不可或缺的哦!
Windows系统累计开机总天数需通过日志回溯统计:一、事件查看器筛选ID6005/6006/6008事件手动累加运行时段;二、PowerShell脚本自动配对计算总秒数并转为天数;三、性能监视器分析Up Time归零点估算重启次数;四、注册表InstallDate与当前时间差得理论最大存活天数;五、LogParser工具解析evtx文件精确统计。

如果您需要了解 Windows 系统自首次安装或历史以来累计开机的总天数,而非单次连续运行时长,则不能依赖内核实时计时器(如“正常运行时间”),而需通过日志回溯与事件累加方式统计所有完整开机周期。以下是实现该目标的多种方法:
一、通过事件查看器提取全部开机与关机事件并手动累加
事件查看器完整记录每次系统启动(ID 6005)、正常关机(ID 6006)、意外断电(ID 6008)及计划重启(ID 1074),依据时间戳可逐段计算各次运行持续时间,并将所有有效运行时段(6005 → 6006 或 6005 → 6008)的秒数相加后换算为总天数。
1、按 Win + R 打开“运行”对话框,输入 eventvwr.msc 并回车,启动事件查看器。
2、在左侧导航树中,依次展开 Windows 日志 → 系统。
3、在右侧操作面板点击 筛选当前日志。
4、在“事件ID”栏中输入:6005,6006,6008,1074(英文逗号分隔),点击确定。
5、在结果列表中,按 TimeCreated 列升序排列,从最早一条 ID 6005 开始,查找其后最近的一条 ID 6006 或 ID 6008;若找到 ID 6006,用其时间减去该 ID 6005 时间,得到本次运行秒数;若为 ID 6008,则同样计算差值,视为一次非正常终止的运行周期。
6、将所有计算出的秒数相加,再除以 86400,所得整数即为累计开机总天数(忽略不足一天的尾数)。
二、使用 PowerShell 脚本自动配对事件并输出总天数
PowerShell 可批量读取系统日志中的启动与关机事件,按时间顺序自动配对每组 ID 6005 与其后续首个 ID 6006/6008,计算每段运行时长并求和,最终直接返回以天为单位的累计开机总时长(向下取整)。
1、以管理员身份启动 Windows Terminal(PowerShell)。
2、执行以下命令获取过去 365 天内的相关事件(如需更长时间范围,可修改 -After 参数):
Get-WinEvent -FilterHashtable @{LogName='System'; ID=6005,6006,6008; StartTime=(Get-Date).AddYears(-1)} -ErrorAction SilentlyContinue | Sort-Object TimeCreated
3、粘贴并运行完整脚本:
$events = Get-WinEvent -FilterHashtable @{LogName='System'; ID=6005,6006,6008} -MaxEvents 10000 -ErrorAction SilentlyContinue | Sort-Object TimeCreated;
$uptimeSeconds = 0;
$bootTimes = @();
foreach ($e in $events) { if ($e.Id -eq 6005) { $bootTimes += $e.TimeCreated } elseif ($e.Id -in (6006,6008) -and $bootTimes.Count -gt 0) { $lastBoot = $bootTimes[0]; $uptimeSeconds += ($e.TimeCreated - $lastBoot).TotalSeconds; $bootTimes = $bootTimes[1..($bootTimes.Length-1)] } }; [Math]::Floor($uptimeSeconds / 86400)
4、脚本执行完毕后,终端将直接输出一个整数,即为 累计开机总天数。
三、利用性能监视器导出“System\Up Time”历史采样数据
性能监视器虽仅显示当前会话的秒级计数器(System\Up Time),但若已启用数据收集器集并长期记录该计数器,则可通过分析历史 .blg 文件反推每日峰值变化,识别每次重启导致的计数器归零点,从而统计重启次数并估算最小累计开机天数(假设每次开机至少运行满 1 天)。
1、按 Win + R 输入 perfmon 并回车,打开性能监视器。
2、在左侧导航窗格中,展开 数据收集器集 → 用户定义,检查是否存在已配置并启用的收集器,其计数器包含 System\Up Time。
3、若存在有效历史记录,右键对应数据收集器,选择 最新报表 或导出为 CSV。
4、在导出文件中查找 System\Up Time 数值列,定位所有 突降至接近 0 的时间点,每个此类点代表一次系统重启。
5、统计该列中重启发生次数,再加 1(当前会话),即得最小开机次数;若确认每次开机均持续 ≥24 小时,则该数值即为保守估计的 累计开机总天数下限。
四、结合注册表 LastBootUpTime 与系统安装日期粗略估算
注册表中 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\InstallDate 存储系统首次安装的 Unix 时间戳(自 1970-01-01 起秒数),而 WMI 的 LastBootUpTime 表示最近一次启动时刻;二者差值反映系统存活总时长上限,虽不等于实际开机天数(含关机休眠期),但可作为理论最大值参考。
1、按 Win + R 输入 regedit 并回车,启动注册表编辑器。
2、导航至路径:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion。
3、在右侧查找名为 InstallDate 的 DWORD 值,双击查看其十进制数值(例如 1672531200)。
4、打开 PowerShell,执行:$install = [DateTimeOffset]::FromUnixTimeSeconds(1672531200).DateTime; $now = Get-Date; ($now - $install).Days(将 1672531200 替换为实际值)。
5、输出结果为自安装日起至今的总天数,即该系统的 理论最大累计存活天数,实际开机天数必小于此值。
五、使用第三方工具 LogParser 批量解析 evt/evtx 文件精确统计
LogParser 是微软官方提供的命令行日志分析工具,支持 SQL 语法直接查询 Windows 事件日志文件(.evtx),可一次性扫描全部历史日志,精准匹配 ID 6005 与后续关机事件,并自动完成时间差计算与累加,适用于拥有多年系统日志存档的场景。
1、从微软官网下载并安装 LogParser 2.2 工具。
2、以管理员身份打开命令提示符,切换至系统日志所在目录(通常为 %SystemRoot%\System32\winevt\Logs\)。
3、执行以下命令(需先备份日志以防锁定):
LogParser "SELECT COUNT(*) AS BootCount FROM Security.evtx WHERE EventID=4608" -i:EVTX
4、针对系统日志执行更复杂聚合:
LogParser "SELECT QUANTIZE(TimeGenerated, 86400) AS DayBucket, COUNT(*) AS BootsPerDay INTO boots_per_day.csv FROM System.evtx WHERE EventID=6005 GROUP BY DayBucket ORDER BY DayBucket" -i:EVTX -o:CSV
5、打开生成的 boots_per_day.csv,逐行确认每日开机次数;若每日仅 1 次且无缺失,则行数即为 有记录的开机天数;将各日 BootsPerDay 相加,即得总开机次数。
今天带大家了解了的相关知识,希望对你有所帮助;关于文章的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
210 收藏
-
443 收藏
-
138 收藏
-
452 收藏
-
370 收藏
-
434 收藏
-
480 收藏
-
441 收藏
-
352 收藏
-
388 收藏
-
449 收藏
-
313 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 485次学习