首頁 >後端開發 >C++ >如何跨平台、跨版本可靠地偵測Windows 10版本?

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

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-05 12:24:02335瀏覽

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

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

上下文

由於不準確,偵測Windows 10 的跨平台相容性可能具有挑戰性在IsWindows10OrGreater() 等可用函數中。本文探討了一種跨平台和多版本的方法來解決此問題。

解決方案

檢索真實作業系統版本最可靠的方法是呼叫 RtlGetVersion。此函數避免了 GetVersionEx 和VerifyVersionInfo 使用的相容性填充程式。可以透過動態連結存取它,如下列程式碼片段所示:

<code class="c++">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(&amp;rovi) ) {
                return rovi;
            }
        }
    }
    RTL_OSVERSIONINFOW rovi = { 0 };
    return rovi;
}</code>

即使沒有清單,此方法也會在 Windows 10 上傳回預期結果。

替代方法

建議實作功能為基礎的解決方案,而不是依賴作業系統版本。這提供了一種更靈活且面向未來的方法。

以上是如何跨平台、跨版本可靠地偵測Windows 10版本?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn