开机那一分钟去哪了
从 Windows 事件里读出真实开机时间线、看懂启动影响评级,别再怪错对象。
测试环境Pro (26H2) / Server · 版本号 26300.9457 / 26100.33650 · x64
E1- 版本号
- 26300.9457 / 26100.33650
- 版本
- Pro (26H2) / Server
- 架构
- x64
- 支持
- 文档(E1)
- 证据
- E1官方文档
- 核验日期
- 2026-10-29
- 页面类型
- 方法
“开机时间”是四个阶段,大多数人测错了那个:
| 阶段 | 发生什么 | 典型耗时 |
|---|---|---|
| 固件/POST | 内存训练、设备初始化 | 3–20 秒,关掉快速启动更久 |
| 引导程序 → 内核 | 驱动初始化 | 2–8 秒 |
| 会话初始化 | 服务与登录 | 5–30 秒 |
| 启动应用 | Run 键、任务、启动文件夹 | 0–180 秒 |
快速启动(hiberboot)跳过了前两个阶段的大部分,所以开了它的机器可能报告“12 秒开机”,却依然迟迟不可用——慢的部分被挪到了会话初始化与启动应用。
Windows 自己会记录启动性能:
Get-WinEvent -LogName 'Microsoft-Windows-Diagnostics-Performance/Operational' | Where-Object Id -in 100,101,102,103,109,110 | Select-Object TimeCreated,Id,LevelDisplayName, @{n='BootMs';e={($_.Properties[4].Value)}} | Select-Object -First 15| 事件 | 含义 |
|---|---|
| 100 | 启动性能监控开始 |
| 101 | 这次启动很慢——你要找的就是它 |
| 102 | 某应用启动超过 30 秒 |
| 103 | 某服务启动超过 30 秒 |
| 109 | 某设备初始化超过 30 秒 |
| 110 | 后台优化耗时过长 |
事件 101 带毫秒级启动时长;102/103/109 会点出具体的应用、服务或设备——那才是“为什么慢”的答案。
Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-Diagnostics-Performance/Operational'; Id=100,101,102,103,106,109,110} -MaxEvents 30 | Select-Object TimeCreated,Id,Message | Format-List启动影响评级
Section titled “启动影响评级”任务管理器启动应用页给每项标低/中/高。评级来自之前几次启动测得的磁盘+CPU 时间——是真数据,不是猜的。
- 高影响的条目值得质疑。
- 没有评级的条目启动次数还不够。
StartupApproved注册表键保存启用/禁用状态,界面切换的就是它。
Get-CimInstance Win32_StartupCommand | Select-Object Name,Command,Location,User自启动藏在这三个地方
Section titled “自启动藏在这三个地方”| 位置 | 任务管理器能看到? |
|---|---|
HKCU/HKLM ...\Run |
能 |
| 启动文件夹 | 能 |
| 带登录触发器的计划任务 | 不能 |
| 自动启动的服务 | 不能 |
这就是为什么把所有条目都禁用后机器还是慢:剩下的负载在服务与计划任务里。见计划任务与唤醒定时器和服务。
根本不是启动的问题
Section titled “根本不是启动的问题”- 快速启动 + 慢盘:恢复时要读很大的 hiberfil。
- 配置文件在网络共享上(域环境):登录在等网络。
- 杀毒软件在登录时全盘扫描。
- Windows 更新在启动阶段收尾。
合理的处理顺序
Section titled “合理的处理顺序”- 读 101/102/103/109——拿到名字,而不是感觉。
- 禁用你认识的高影响启动应用。
- 查带登录触发器的计划任务。
- 最后才考虑服务。
- 用同一条查询、同样条件复测。
E1。事件 ID 与字段有微软文档依据;实验室虚拟机从虚拟磁盘启动,因此不发布启动耗时数字。