2012-10-15 108 views
1

我看到的每個鏈接都經常提到GetVersionEx,但這看起來並沒有什麼幫助。如何使用C++準確獲取Windows操作系統版本?

我的方法是這樣的,

static int windowsVersion() { 
     OSVERSIONINFO osvi; 

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

哪個我正在Windows 8的,而是返回。

如果我試圖準確地獲取他們的Windows版本,那不是很有幫助。

注:我也檢查了所有其他變量。 dwMinorVersion返回4,內部版本號返回類似8400.

+0

你是什麼意思'不是很有幫助'? –

+0

@JesseGood嗯,我想知道我正在運行的是哪個windows版本。如果我正在運行Windows 8,我希望看到一種實際查看Windows 8的方法,而不是一個6. – Austin

+0

您知道可以只寫'OSVERSIONINFO osvi = {sizeof(osvi)};'?這將其他領域排除在外。 – MSalters

回答

3

您需要同時使用主版本號和次版本號。

的Windows Vista 6.0.6000
Windows 7的6.1.7600
的Windows 8 64位在我的電腦上的版本返回6.2.9200

5

Manual:對於Windows 8,dwMajorVersion是6和dwMinorVersion是2

3

A 6對於dwMajorVersion意味着什麼從Windows Vista和以上。這就是微軟版本管理的工作原理。 2對於dwMinorVersion應該是Windows 8或Windows Server 2012.如果wProductType == VER_NT_WORKSTATION,您得到了Windows 8.所有這些都在MSDN上解釋。

相關問題