1

我看到的每个链接总是提到 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 之类的东西。

4

3 回答 3

5

手册:对于 Windows 8,dwMajorVersion为 6 和dwMinorVersion2

于 2012-10-15T04:17:23.757 回答
3

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

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

于 2012-10-15T04:17:22.530 回答
3

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

于 2012-10-15T04:20:22.023 回答