由于不准确,检测 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(&rovi) ) { return rovi; } } } RTL_OSVERSIONINFOW rovi = { 0 }; return rovi; }</code>
即使没有清单,此方法也会在 Windows 10 上返回预期结果。
建议实施基于功能的解决方案,而不是依赖操作系统版本。这提供了一种更灵活且面向未来的方法。
以上是如何跨平台、跨版本可靠地检测Windows 10版本?的详细内容。更多信息请关注PHP中文网其他相关文章!