Windows 记录开机后应用启动慢的问题

最近大屏产品经常报一些开机启动的问题,工厂反馈厂测软件有些模块测试不通过,家里开发测试均发现Launcher等软件首次启动需要加载10多秒。

经过小伙伴们初步排查,发现是刷母盘后首次开机问题概率比较大。

1. 使用新母盘,首次开机是必现应用启动慢问题。

2. 将一个exe换个路径,重启电脑,也是会有这个打开exe启动慢问题。

Windows版本:WIN11 IOT 企业版 23H2 22631.2428

网上也有其它同学在报类似问题,未能说明根本原因但确定是和智能控制有关:解决win11系统开机后第一次打开一个软件很慢,关闭进程重新打开速度就正常的问题 - 远景论坛 - 前沿科技与智慧生态的极客社区

我总结下: 从Win11 22H2版本开始,如果是全新安装的系统,那么Windows会默认打开“智能应用控制”选项的“评估”功能。

根据官网文档 Windows 应用程序控制 | Microsoft Learn ,智能应用控制的工作原理是:当用户尝试在 Windows 上运行应用时,智能应用控制将检查,以查看微软的智能云安全服务是否可以对其安全性做出预测。 如果服务认为应用是安全的,则智能应用控制将允许它运行。 如果认为该应用是恶意应用或可能不需要的应用,则智能应用控制将阻止它。如果安全服务无法对应用进行预测,则智能应用控制会检查该应用是否具有有效的签名。 如果应用具有有效的签名,智能应用控件将允许它运行。 如果应用未签名或签名无效,智能应用控制会将其视为不受信任,并阻止它进行保护。

虽然微软声明智能应用控制在评估模式下不会阻止任何内容,但是该模式下确实会严重拖慢某些程序的首次打开速度

小伙伴验证了下,手动关闭智能应用控制,从评估改为关闭,就能解决首次启动慢的问题。

手动可以关闭,那代码是否也可以操作关闭呢?官网有说明,如需要关闭,HKLM\SYSTEM\CurrentControlSet\Control\CI\Policy下VerifiedAndReputablePolicyState将属性改为0,然后使用 CiTool.exe -r 使更改生效。

默认值是2,“评估”模式:

另外,我尝试在上面同一大屏设备上安装24H2家庭中文版,以及笔记本设备上安装WIN11 IOT 企业版 23H2,智能应用控制”选项是“评估”,但都未能复现开机应用启动慢问题

根据官网智能控制的介绍 什么是智能应用控制? - Microsoft 支持,除了手动关闭外,有一些情况会自动关闭智能应用控制:

  • 在 评估模式下 ,我们确定你不适合使用智能应用控制。

  • 你或登录到计算机的另一个用户手动关闭了它。

  • 你的设备在 S 模式下运行 Windows。 你需要关闭 S 模式,然后重置电脑才能进入评估模式。

  • Windows 中的 可选诊断数据 已关闭。 如果要打开智能应用控制,则需要重置此电脑或重新安装 Windows,并在设置过程中选择“ 发送可选诊断数据 ”。

当时我评估可能除了这些路径外还有其它参数影响智能控制“评估”选项。虽然显示的是“评估”,但实际上并未生效

经过我和团队小伙伴大量的对比验证,总结出了复现条件:

1. 智能控制,默认选择“评估”模式

2. 应用程序DLL未签名 

3. 连接WIFI,能上网的或者不能上网的都行

4. 选择一个从未启动过的应用路径exe - 你可以在桌面上新建一个复杂名称文件夹,把exe放进去

在这4个条件下,能复现windows开机应用冷启动特别慢的问题,概率高达80%以上。不是必现的,我们经过几十次验证发现有3次启动正常。

为何联网会有影响呢?我根据智能控制的原理的第一个步骤”查看微软的智能云安全服务来做预测“有关,我推测应该是要请求微软服务器。至于无法联网也有此问题,可能是请求超时?

签名也是与智能控制的第二个步骤“如果应用具有有效的签名,智能应用控件将允许它运行”有关,有签名的情况下,正常应用不会有影响。

程序签名,一般外部Nuget源引用的Nuget包都有签名,比如Newtonsoft.Json使用了基金会的签名:

而上面的问题中,我司的自研应用某些情况下未签名,才暴露了此启动慢问题:

我额外使用了Win11家庭版24H2 以及 Win11企业版23H2验证,按上面多条件路径,均能复现。

所以如果你遇到了这个首次开机应用启动慢的问题,可以确认下你的程序exe以及DLL是否都签名了。另外也可以将智能控制关闭,这个关闭不会影响Windows系统的稳定性。

posted @ 2024-12-24 20:05  唐宋元明清2188  阅读(320)  评论(3编辑  收藏  举报