C++ - 获取 Windows 版本

Posted

技术标签:

【中文标题】C++ - 获取 Windows 版本【英文标题】:C++ - Get Windows version 【发布时间】: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。 我正在使用代码块, 感谢您的回复。

【问题讨论】:

【参考方案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()。这可以在不影响清单的情况下工作(尽管您可能出于其他原因想要这样做)。

【讨论】:

以上是关于C++ - 获取 Windows 版本的主要内容,如果未能解决你的问题,请参考以下文章

windows平台下 c++获取 系统版本 网卡 内存 CPU 硬盘 显卡信息

C++ 获取系统版本号

使用 C++ 在 Windows 中获取 OSVersion

windows平台下 c++获取 系统版本 网卡 内存 CPU 硬盘 显卡信息

获取 C++ 中的 DLL 版本

在 windows 中检查 c++ 版本