在過去的幾周裡,互聯網上一直在熱議Windows1124H2系統要求可能即將發生的變化,其中微軟似乎希望在下一版Windows11(24H2版)中強制使用基於SSE4.2的指令PopCnt。這意味著較舊的CPU無法啟動Canarybuild25905,並且此前對驗證機制繞行的做法也不起作用。
雖然當時還不知道,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)"的信息。該信息表明,微軟可能有意識地引入這一變化。