由于不准确,检测 Windows 10 的跨平台兼容性可能具有挑战性在 IsWindows10OrGreater() 等可用函数中。本文探讨了一种跨平台、多版本的方法来解决这个问题。
检索真实操作系统版本的最可靠方法是调用 RtlGetVersion。此函数避免了 GetVersionEx 和VerifyVersionInfo 使用的兼容性填充程序。可以通过动态链接访问它,如以下代码片段所示:
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;
}
即使没有清单,此方法也会在 Windows 10 上返回预期结果。
建议不要依赖操作系统版本实施基于功能的解决方案。这提供了一种更灵活且面向未来的方法。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3