微軟修復了誤觸發的PopCnt阻止程式但Windows 11 24H2可能會繼續要求
在過去的幾周里,互聯網上一直在熱議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)”的資訊。該資訊表明,微軟可能有意識地引入了這一變化。