2010-01-20 74 views
9

在項目上工作,需要能夠確定操作系統是Windows 7,Vista還是默認爲XP。我知道我可以運行在Win2K和更早的版本中,但讓我們說這不是一個問題,因爲其他代碼在它到達這一點之前就會捕獲它。我的應用程序暫時使用VS2005。我發現文章和示例代碼相似,但他們似乎臃腫的我的用途。只是尋找一個快速和骯髒的回報。確定操作系統是否爲Windows 7

http://msdn.microsoft.com/en-us/library/ms724358%28VS.85%29.aspx

回答

18

Windows Version列表,使用GetVersionEx

Version Number Description 
6.1    Windows 7 /Windows 2008 R2 
6.0    Windows Vista/Windows 2008 
5.2    Windows 2003 
5.1    Windows XP 
5.0    Windows 2000 
+0

不幸的是,這並沒有區分最近的Workstation和Server平臺。請參閱:http://www.codeproject.com/script/Articles/ViewDownloads.aspx?aid=10476 – 2013-03-07 15:29:05

+0

另請參閱http://en.wikipedia.org/wiki/List_of_Microsoft_Windows_versions以獲取最新列表。您也可以爲Windows的「正常」與「服務器」版本測試osvi.wProductType == VER_NT_WORKSTATION:即6.1是Windows 7(true)或Windows Server 2008 R2(false)。 – ddevienne 2014-10-06 12:26:51

18

一般情況下,你不希望被測試針對特定版本號,而是檢查特定的功能。如果您確實想要檢測「Windows 7或更高版本」,但是...

#include <windows.h> 

bool IsWin7OrLater() { 
    DWORD version = GetVersion(); 
    DWORD major = (DWORD) (LOBYTE(LOWORD(version))); 
    DWORD minor = (DWORD) (HIBYTE(LOWORD(version))); 

    return (major > 6) || ((major == 6) && (minor >= 1)); 
} 

對於2000,分別比較主要和次要5和0。對於XP,比較對5和1對於Vista,6和0

3

在Windows 8.1 SDK 1)出臺了多項Version Helper functions,以幫助確定操作系統的版本的應用程序上運行:

#include <VersionHelpers.h> 

... 

    if (IsWindows7OrGreater()) { 
     // Windows 7 or above 
    } else if (IsWindowsVistaOrGreater()) { 
     // Windows Vista 
    } else if (IsWindowsXPOrGreater()) { 
     // Windows XP 
    } else { 
     // Unsupported version of Windows 
    } 

如果您需要區分Windows的客戶端版本和服務器版本,則可以撥打IsWindowsServer


1) 在Windows 8.1 SDK可用於生成適用於Windows的所有受支持版本的應用程序。

相關問題