[Win32 API] OSのバージョン取得
OSVERSIONINFO構造体とGetVersionEx関数を利用すればいいらしい。
ただし、OSVERSIONINFO構造体ではエディション情報(XP Home/Proとか)までは取得できない。エディション情報を取得する場合はOSVERSIONINFOEX構造体を用いる必要があるらしい。
OSVERSIONINFO構造体
- DWORD dwOSVersionInfoSize
- 構造体のサイズ
- DWORD dwMajorVersion
- OSのメジャーバージョン番号
- DWORD dwMinorVersion
- OSのマイナーバージョン番号
- DWORD dwBuildNumber
- OSのビルド番号
- DOWRD dwPlatformId
- プラットフォームID
- TCHAR szCSDVersion[128]
- 追加情報
各OS毎の組み合わせ*1
OS | dwPlatformId | dwMajorVersion | dwMinorVersion | dwBuildNumber | szCSDVersion |
---|---|---|---|---|---|
Windows 95 | 1(9x系) | 4 | 0 | 950 | |
Windows 95 SP1 | a | ||||
Windows 95 OSR2/2.1 | 1111 | B | |||
Windows 95 OSR2.5 | 1212 | C | |||
Windows 98 | 10 | 1998 | |||
Windows 98 SE | 2222 | A | |||
Windows Me | 90 | 3000 | |||
Windows NT 4.0 | 2(NT系) | 0 | 1381 | ||
Windows 2000 | 5 | 0 | 2195 | ||
Windows XP | 1 | 2600 | |||
Windows XP SP2 | Service Pack 2 | ||||
Windows XP x64 | 2 | ||||
Windows Server 2003 | 2 | ||||
Windows Server 2003 R2 | |||||
Windows Vista | 6 | 0 |
使ってみる
OSVERSIONINFO osVer;
//構造体のサイズを求めてdwOSVersionInfoSizeに格納
osVer.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
::GetVersionEx( &osVer );