在过去的几周里,互联网上一直在热议 Windows 11 24H2 系统要求可能即将发生的变化,其中微软似乎希望在下一版 Windows 11(24H2 版)中强制使用基于 SSE 4.2 的指令 PopCnt。这意味着较旧的CPU无法启动Canary build 25905,并且此前对验证机制绕行的做法也不起作用。
虽然当时还不知道,PopCnt 似乎也是导致 Windows 10 上的微软应用商店应用程序被破坏的罪魁祸首,比如旧处理器无法在这些系统上启动,往往会导致"文件系统错误(-2147219196)"。
微软工程师 Mahmoud G Saleh(他是 MSVC(Microsoft Visual C++)的首席软件工程经理)后来证实,该问题与一个存在漏洞的 Visual C++ 库(VCLibs)软件包有关。他们写道:
Visual C++ 团队已确认该问题是照片应用程序和其他应用程序所依赖的 vclibs 框架包中的一个回归。该问题会影响使用较旧硬件(不支持 SSE 4.2 指令)的计算机。微软目前正在验证解决方案,预计将很快向受影响的客户推出。
早在去年 11 月,Masahiro Takegami 就发现了英特尔酷睿 2 Quad Q6600 上与 PopCnt 相关的错误。这个问题似乎是在 Visual Studio 17.8.0 更新版本中出现的。
Visual Studio 2022 的最新版本(17.9.1 版)修复了这个问题以及其他一些错误。完整更新日志如下:
Visual Studio 2022 17.9.1 版新增功能概述
为使用 16.11 C++ 工具集和 VS 17.9 的客户将 16.11 MSVC 工具集更新为 16.11.34 (14.29.30154.0)。
修正了一个错误,即静态链接时使用的libconcrt.lib可能包含一条 SSE 4.2 指令,而该指令在旧版 X64 系统上是非法的。
已添加对 char8_t 的支持,将其作为使用 /clr 的 C++20 的内置类型。
虽然这应该能解决 VS 代码问题以及应用程序无法在旧处理器上运行的问题,但旧芯片似乎依然不太可能在 Windows 11 24H2 上运行。当用户试图在此类系统上安装 24H2 版本时,Windows 11 版本的设置文件显然已经开始显示"此 PC 的处理器不支持关键功能 (PopCnt)"的信息。该信息表明,微软可能有意识地引入了这一变化。