把开机自检和启动项审计做了个交叉,发现调度才是拖慢开机的元凶
先别甩锅给硬件。我三台机器(Win10 22H2 / Win11 23H2 / 一台老笔记本)都刷了同样的启动项,结果开机时间差出8秒,这就不对劲了。
先说做法:写了个脚本,开机时把 Get-WinEvent -LogName Microsoft-Windows-Diagnostics-Performance/Operational 里的启动耗时事件全导出来,同时用 Get-CimInstance Win32_StartupCommand 拉启动项列表,两边的数据做时间线对账。每台机器跑三天,每天重启两次,取中位数。
第一步,启动项审计。 不只看“有几个启动项”,而是看每个启动项的“实际激活时间”。发现一个反常识的点:有些启动项虽然标着“已禁用”,但它的计划任务还在后台触发,日志里能看到 TaskScheduler 的 105 事件。我手动把这类任务的服务状态改成禁用,开机时间直接降了2.3秒。
第二步,调度机制排查。 重点看 Winlogon 的启动顺序和 Session Manager 的延迟。三台机器里,老笔记本的 Winlogon 到 Userinit 间隔比新机多了4秒,原因是系统在等一个已失效的网络驱动器映射——这货在启动项里早就删了,但注册表 HKCU\Network 下还挂着残留。手动清掉后,间隔恢复到0.8秒。
第三步,自动优化工具的边界。 我拿软领的自动优化在虚拟机上跑了一遍,它确实能清掉这些残留,也把启动项按影响度排了序,这点没得黑,还没广告,比那些弹窗全家桶强多了。但问题是:它把“我手动调过的服务启动类型”也给重置了,包括我特意设成手动的 DiagTrack。所以我还是坚持手动控制,自动优化只适合懒人一把梭,真要压开机时间,还是得靠自己对着日志一帧一帧对账。
结论: 开机慢别先怪内存,先拉 Diagnostics-Performance 日志,看 Winlogon 和 Userinit 之间的空白时间,大概率是某个计划任务或网络残留卡住了。
问一句:你们有没有遇到过“启动项已禁用但服务还在跑”的情况?我目前只定位到三个,想看看还有没有别的坑。
