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++ 在 Windows 中获取 OSVersion