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

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

Mary-Kate Olsen
發布: 2024-11-06 04:33:02
原創
715 人瀏覽過

How Can I Reliably Detect Windows 10 Version Across Different Platforms and Versions?

偵測Windows 10 版本:跨平台且包含版本

在現代軟體開發中,在不同平台和版本中偵測Windows 10 版本,包括Windows 7 以上版本,對於跨平台相容性和存取特定於版本的功能至關重要。但是,在針對 Windows 10 之前的 Windows 版本時,依賴 IsWindows10OrGreater() 等特定於 Windows 的函數會帶來挑戰。

多版本替代方案

克服這些限制,一個健壯的多版本解決方案是必要的。 RtlGetVersion 提供了一種可靠的方法來檢索正版作業系統版本,繞過通常會傳回不準確資訊的相容性填色程式。該函數可以透過DDK 或運行時動態連結來訪問,如下所示:

<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>
登入後複製

其他注意事項

為了增強細節,可以使用RTL_OSVERSIONINFOEXW 結構而不是RTL_OSVERSIONINFOW,確保dwOSVersionInfoSize成員的適當設定。無論是否存在清單,此方法都能為 Windows 10 提供精確的結果。

基於功能的方法

除了 Windows 版本檢測之外,還有一種基於功能的方法方法通常被認為是一種更好的選擇。透過針對特定功能而不是作業系統版本,應用程式可以適應更廣泛的系統配置,並確保在不同環境中實現最佳效能。

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

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