【发布时间】:2021-12-18 13:01:26
【问题描述】:
我是 FOSS 游戏 0 AD (https://play0ad.com) 的开发人员,我最近意识到我们对 Windows 11 的 Windows 版本的检测失败,就像在 Windows 8.1 和 Windows 10 之间一样。
它报告的 Windows 10.0.22000 在技术上是正确的版本,但我们希望它报告 Windows 11。
这是我们当前使用的代码
- https://github.com/0ad/0ad/blob/master/source/lib/sysdep/os/win/wposix/wutsname.cpp#L35
- https://github.com/0ad/0ad/blob/master/source/lib/sysdep/os/win/wversion.cpp
- https://github.com/0ad/0ad/blob/master/source/lib/sysdep/os/win/wversion.h
出于兼容性原因,我们坚持使用 Windows 7 SDK。
简单的解决办法是更换
if (osInfo.dwMajorVersion >= 10)
{
stream << "Win" << osInfo.dwMajorVersion;
}
通过
if (osInfo.dwMajorVersion >= 10)
{
if (osInfo.dwMinorVersion > 22000)
stream << "Win" << 11;
else
stream << "Win" << osInfo.dwMajorVersion;
}
是否有更强大/面向未来的解决方案。
提前致谢!
【问题讨论】:
-
如果(satya.nadella.v == 2.1)
-
This post 可能会有所帮助。
-
谢谢@LouisGo 看来我们必须再次解决它:/
标签: c++ windows open-source