如何准确获取Windows操作系统版本的C + +?

我所看到的每个链接总是提到GetVersionEx,但这似乎不是很有帮助。

我的方法看起来像这样,

static int windowsVersion() { OSVERSIONINFO osvi; ZeroMemory(&osvi, sizeof(OSVERSIONINFO)); osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&osvi); return osvi.dwMajorVersion; } 

我正在运行Windows 8 ,而是它返回6

如果我试图准确地得到他们的Windows版本,这不是很有帮助。

注意:我也检查了所有其他variables。 dwMinorVersion返回一个4,内部版本号返回类似于8400。

您需要同时使用主要和次要版本号。

Windows Vista 6.0.6000
Windows 7 6.1.7600
我的电脑上的Windows 8 64位版本返回6.2.9200

手动 :对于Windows 8, dwMajorVersion是6, dwMinorVersion是2

dwMajorVersion6可以意味着从Windows Vista和以上的任何东西。 这就是微软版本的工作原理。 2 for dwMinorVersion应该是Windows 8或Windows server 2012.如果wProductType == VER_NT_WORKSTATION ,你得到了Windows 8.所有这一切都在MSDN上解释。