如何使用C++准确获取Windows操作系统版本

How to accurately get Windows OS version with C++?

本文关键字:Windows 操作系统 版本 获取 何使用 C++      更新时间:2023-10-16

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

我的方法看起来像这样,

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

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

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

注意:我还检查了所有其他变量。 dwMinorVersion 返回 4,内部版本号返回类似 8400 的内容。

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

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

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

dwMajorVersion6可以表示Windows Vista及更高版本的任何内容。这就是Microsoft版本控制的工作方式。 dwMinorVersion 2应该是Windows 8或Windows Server 2012。如果wProductType == VER_NT_WORKSTATION,你得到了Windows 8。所有这些都在MSDN上进行了解释。