首页 >后端开发 >C++ >如何跨平台、跨版本可靠地检测Windows 10版本?

如何跨平台、跨版本可靠地检测Windows 10版本?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-05 12:24:02370浏览

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