【问题标题】:C++ - Get Windows versionC++ - 获取 Windows 版本
【发布时间】:2020-12-19 03:34:35
【问题描述】:

我试图以 C++ 的形式获取 Windows 版本。 我已经尝试过代码,但它给了我错误的版本。 示例:

#include<windows.h>
#include<stdio.h>
int main()
{
     OSVERSIONINFOEX info;
     ZeroMemory(&info, sizeof(OSVERSIONINFOEX));
     info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
     GetVersionEx((LPOSVERSIONINFO)&info);//info requires typecasting

     printf("Windows version: %u.%u\n", info.dwMajorVersion, info.dwMinorVersion);

}

输出:Windows 版本:6.2 我使用 Windows 10 和 NT 6.2 对应于 Windows 8/8.1。 我正在使用代码块, 感谢您的回复。

【问题讨论】:

    标签: c++ windows version detect


    【解决方案1】:

    根据documentation

    随着 Windows 8.1 的发布,GetVersionEx API 的行为在它为操作系统版本返回的值方面发生了变化。 GetVersionEx 函数返回的值现在取决于应用程序的显示方式。

    未针对 Windows 8.1 或 Windows 10 显示的应用程序将返回 Windows 8 操作系统版本值 (6.2)。一旦应用程序针对给定的操作系统版本显示出来,GetVersionEx 将始终返回应用程序在未来版本中显示的版本。要为 Windows 8.1 或 Windows 10 显示您的应用程序,请参阅Targeting your application for Windows

    (我认为他们的实际意思是,将返回的 最大 版本号是您在清单中拥有的值)。

    如果您只想在 Vista 及更高版本上运行,那么获取 Windows 版本的更简单方法是使用GetProductInfo()。这可以在不影响清单的情况下工作(尽管您可能出于其他原因想要这样做)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-29
      • 2023-04-05
      • 1970-01-01
      • 2019-03-01
      • 2017-02-08
      • 2021-06-07
      • 2011-11-02
      相关资源
      最近更新 更多