」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何跨平台、跨版本可靠地偵測Windows 10版本?

如何跨平台、跨版本可靠地偵測Windows 10版本?

發佈於2024-11-21
瀏覽:356

How to Reliably Detect Windows 10 Version Across Platforms and Versions?

檢測Windows 10 版本跨平台和多版本

上下文

由於不準確,檢測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