/* The following example uses the GetVersionEx function to display the version of the currently running operating system. 
  Relying on version information is not the best way to test for a feature. Instead, refer to the documentation for the feature of interest. For more information on common techniques for feature detection, see Operating System Version. 
  If you must require a particular operating system, be sure to use it as a minimum supported version, rather than design the test for the one operating system. This way, your detection code will continue to work on future versions of Windows. */ BOOL DisplaySystemVersion() {    OSVERSIONINFOEX osvi;    BOOL bOsVersionInfoEx;
     // Try calling GetVersionEx using the OSVERSIONINFOEX structure.    //    // If that fails, try using the OSVERSIONINFO structure.
     ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));    osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
     if( !(bOsVersionInfoEx = GetVersionEx ((OSVERSIONINFO *) &osvi)) )    {       // If OSVERSIONINFOEX doesn't work, try OSVERSIONINFO.
        osvi.dwOSVersionInfoSize = sizeof (OSVERSIONINFO);       if (! GetVersionEx ( (OSVERSIONINFO *) &osvi) )           return FALSE;    }
     switch (osvi.dwPlatformId)    {       case VER_PLATFORM_WIN32_NT:
        // Test for the product.
           if ( osvi.dwMajorVersion <= 4 )             printf("Microsoft Windows NT ");
           if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 0 )             printf ("Microsoft Windows 2000 ");
           if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 1 )             printf ("Microsoft Windows XP ");
        // Test for product type.
           if( bOsVersionInfoEx )          {             if ( osvi.wProductType == VER_NT_WORKSTATION )             {                if( osvi.wSuiteMask & VER_SUITE_PERSONAL )                   printf ( "Personal " );                else                   printf ( "Professional " );             }
              else if ( osvi.wProductType == VER_NT_SERVER )             {                if( osvi.wSuiteMask & VER_SUITE_DATACENTER )                   printf ( "DataCenter Server " );                else if( osvi.wSuiteMask & VER_SUITE_ENTERPRISE )                   printf ( "Advanced Server " );                else                   printf ( "Server " );             }          }          else          {             HKEY hKey;             char szProductType[80];             DWORD dwBufLen;
              RegOpenKeyEx( HKEY_LOCAL_MACHINE,                "SYSTEM\\CurrentControlSet\\Control\\ProductOptions",                0, KEY_QUERY_VALUE, &hKey );             RegQueryValueEx( hKey, "ProductType", NULL, NULL,                (LPBYTE) szProductType, &dwBufLen);             RegCloseKey( hKey );             if ( lstrcmpi( "WINNT", szProductType) == 0 )                printf( "Professional " );             if ( lstrcmpi( "LANMANNT", szProductType) == 0 )                printf( "Server " );             if ( lstrcmpi( "SERVERNT", szProductType) == 0 )                printf( "Advanced Server " );          }
        // Display version, service pack (if any), and build number.
           if ( osvi.dwMajorVersion <= 4 )          {             printf ("version %d.%d %s (Build %d)\n",                osvi.dwMajorVersion,                osvi.dwMinorVersion,                osvi.szCSDVersion,                osvi.dwBuildNumber & 0xFFFF);          }          else          {              printf ("%s (Build %d)\n",                osvi.szCSDVersion,                osvi.dwBuildNumber & 0xFFFF);          }          break;
        case VER_PLATFORM_WIN32_WINDOWS:
           if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 0)          {              printf ("Microsoft Windows 95 ");              if ( osvi.szCSDVersion[1] == 'C' || osvi.szCSDVersion[1] == 'B' )                 printf("OSR2 " );          } 
           if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 10)          {              printf ("Microsoft Windows 98 ");              if ( osvi.szCSDVersion[1] == 'A' )                 printf("SE " );          } 
           if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 90)          {              printf ("Microsoft Windows Me ");          }           break;
        case VER_PLATFORM_WIN32s:
           printf ("Microsoft Win32s ");          break;    }    return TRUE;  }
  출처 : msdn |    |