C++学習の:システムバージョンを判断する
6769 ワード
多くの場合、システムのバージョンに応じて異なる操作を行う必要があります.以下では、Windowsオペレーティングシステムのバージョン関数をどのように判断するかを示します.
- int VRVGetSystemVersion(SYSTEM_VERSION *pnSystemVersion)
- {
- OSVERSIONINFO osvi;
- BOOL bOsVersionInfoEx;
-
- *pnSystemVersion = ENUM_SYSTEM_UNKOWN;
-
- memset(&osvi, 0, sizeof(OSVERSIONINFO));
- osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
-
- if (!(bOsVersionInfoEx = GetVersionEx((OSVERSIONINFO *) &osvi)) )
- {
- osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
- if (! GetVersionEx( (OSVERSIONINFO *) &osvi) )
- {
- return FALSE;
- }
- }
-
- switch (osvi.dwPlatformId)
- {
- case VER_PLATFORM_WIN32_NT:
- if (osvi.dwMajorVersion == 6 && osvi.dwMinorVersion == 0)
- {
- *pnSystemVersion = ENUM_SYSTEM_WIN_VISTA;
- }
-
- if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 2)
- {
- *pnSystemVersion = ENUM_SYSTEM_WIN_SER_2003;
- }
-
- if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 1)
- {
- *pnSystemVersion = ENUM_SYSTEM_WIN_XP;
- }
-
- if (osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 0)
- {
- *pnSystemVersion = ENUM_SYSTEM_WIN_2000;
- }
-
- if ( osvi.dwMajorVersion <= 4)
- {
- *pnSystemVersion = ENUM_SYSTEM_WIN_NT;
- }
-
- if (osvi.dwMajorVersion == 6 && osvi.dwMinorVersion == 1)
- {
- *pnSystemVersion = ENUM_SYSTEM_WIN_7;
- }
- break;
- case VER_PLATFORM_WIN32_WINDOWS:
- if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 0 )
- {
- *pnSystemVersion = ENUM_SYSTEM_WIN_95;
- }
-
- if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 10)
- {
- *pnSystemVersion = ENUM_SYSTEM_WIN_98;
- }
-
- if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 90)
- {
- *pnSystemVersion = ENUM_SYSTEM_WIN_ME;
- }
-
- break;
- default:
- *pnSystemVersion = ENUM_SYSTEM_UNKOWN;
- break;
-
- }
- return TRUE;
- }