由於不準確,檢測Windows 10 的跨平台相容性可能具有挑戰性在IsWindows10OrGreater() 等可用函數中。本文探討了一種跨平台、多版本的方法來解決這個問題。
檢索真實作業系統版本的最可靠方法是呼叫 RtlGetVersion。此函數避免了 GetVersionEx 和VerifyVersionInfo 使用的相容性填充程式。可以透過動態連結存取它,如下列程式碼片段所示:
RTL_OSVERSIONINFOW GetRealOSVersion() {
HMODULE hMod = ::GetModuleHandleW(L"ntdll.dll");
if (hMod) {
RtlGetVersionPtr fxPtr = (RtlGetVersionPtr)::GetProcAddress(hMod, "RtlGetVersion");
if (fxPtr != nullptr) {
RTL_OSVERSIONINFOW rovi = { 0 };
rovi.dwOSVersionInfoSize = sizeof(rovi);
if ( STATUS_SUCCESS == fxPtr(&rovi) ) {
return rovi;
}
}
}
RTL_OSVERSIONINFOW rovi = { 0 };
return rovi;
}
即使沒有清單,此方法也會在 Windows 10 上傳回預期結果。
建議不要依賴作業系統版本來實施基於功能的解決方案。這提供了一種更靈活且面向未來的方法。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3