首頁 > 後端開發 > C++ > 如何從跨平台角度準確偵測Windows 10版本?

如何從跨平台角度準確偵測Windows 10版本?

Barbara Streisand
發布: 2024-11-05 04:16:01
原創
677 人瀏覽過

How Can I Accurately Detect Windows 10 Version From a Cross-Platform Perspective?

Windows 10 版本的跨平台偵測

從跨平台角度準確偵測Windows 10 的任務可能具有挑戰性,因為不同Windows 版本之間的版本報告不一致。雖然 IsWindows10OrGreater() 函數很容易使用,但它在早期 Windows 版本中的缺失造成了障礙。

檢索真實作業系統版本

有效的解決方案在於繞過相容性填充程式並直接存取底層作業系統版本資訊。這可以使用 Windows 驅動程式開發工具包 (DDK) 中的 RtlGetVersion 函數來實現。

運行時動態連結

為了避免DDK 的依賴,運行時動態連結可以如下所示使用:

<code class="C++">typedef LONG NTSTATUS, *PNTSTATUS;
#define STATUS_SUCCESS (0x00000000)

typedef NTSTATUS (WINAPI* RtlGetVersionPtr)(PRTL_OSVERSIONINFOW);

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版本?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板