標籤:rac ios server system space ret windowsxp sdn turn
曾經在代碼中推斷使用者的Windows作業系統版本號碼都是通過GetVersion或GetVersionEx擷取版本號碼號,然後比較。
今天偶然發如今新的Visual Studio提供了新的函數來推斷系統版本號碼,比直接調用API要方便得多。
為了使用新的函數。須要使用SDK 8.1。我用的VS2013。已經內建了。
#include "stdafx.h"#include <iostream>#include <windows.h>// VersionHelpers.h 依賴於 windows.h#include <VersionHelpers.h> // Windows SDK 8.1 才有喔using namespace std;int _tmain(int argc, _TCHAR* argv[]){// 是否大於等於 XPif (IsWindowsXPOrGreater())cout << ">= XP" << endl;elsecout << " < XP" << endl;// 是否大於等於 XP SP1if (IsWindowsXPSP1OrGreater())cout << ">= XP SP1" << endl;elsecout << " < XP SP1" << endl;// 是否大於等於 XP SP2if (IsWindowsXPSP2OrGreater())cout << ">= XP SP2" << endl;elsecout << " < XP SP2" << endl;// 是否大於等於 XP SP3if (IsWindowsXPSP3OrGreater())cout << ">= XP SP3" << endl;elsecout << " < XP SP3" << endl;// 是否大於等於 Vistaif (IsWindowsVistaOrGreater())cout << ">= Vista" << endl;elsecout << " < Vista" << endl;// 是否大於等於 Vista SP1if (IsWindowsVistaSP1OrGreater())cout << ">= Vista SP1" << endl;elsecout << " < Vista SP1" << endl;// 是否大於等於 Vista SP2if (IsWindowsVistaSP1OrGreater())cout << ">= Vista SP2" << endl;elsecout << " < Vista SP2" << endl;// 是否大於等於 Win8if (IsWindows8OrGreater())cout << ">= Win8" << endl;elsecout << " < Win8" << endl;// 是否大於等於 Win8.1if (IsWindows8Point1OrGreater())cout << ">= Win8.1" << endl;elsecout << " < Win8.1" << endl;// 是否為server版if (IsWindowsServer())cout << "server版" << endl;elsecout << "非server版" << endl;// 以上的函數都是通過IsWindowsVersionOrGreater實現的// Windows 2000的版本為5.0,所以我們也能夠直接通過版本推斷if (IsWindowsVersionOrGreater(5, 0, 0))cout << ">= Win 2000" << endl;elsecout << " < Win 2000" << endl;system("pause");return 0;}
Win7 x64 旗艦版執行效果:
另外。假設將平台工具集選擇為支援XP的話。就不能用上面的函數了,會提示找不到VersionHelper.h標頭檔。
推斷Windows版本號碼新方法