GetOS en C++

  • 0 Respuestas
  • 2780 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Expermicid

  • *
  • Ex-Staff
  • *****
  • Mensajes: 463
  • Actividad:
    0%
  • Reputación 0
  • _-Expermicid-_
  • Skype: expermicid.xd
    • Ver Perfil

GetOS en C++

  • en: Enero 17, 2013, 01:50:48 pm
Hola a todos. En esta ocasion el code es para determinar el sistema operativo en el que se ejecuta.

Código: C
  1. #pragma comment(lib, "User32.lib")
  2. #include <windows.h>
  3. #include <iostream>
  4.  
  5. using namespace std;
  6.  
  7. void main(void) {
  8.  
  9.    OSVERSIONINFOEX OSver;
  10.     BOOL bOsVersionInfoEx;
  11.  
  12.     ZeroMemory(&OSver, sizeof(OSVERSIONINFOEX));
  13.  
  14.     OSver.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
  15.     bOsVersionInfoEx = GetVersionEx((OSVERSIONINFO*) &OSver);
  16.  
  17.     if(bOsVersionInfoEx == 0 )
  18.       cout << "Error" << endl;
  19.  
  20.    switch(OSver.dwPlatformId) {
  21.       case VER_PLATFORM_WIN32s:
  22.          cout << "Windows " << OSver.dwMajorVersion << OSver.dwMinorVersion << endl;
  23.          break;
  24.       case VER_PLATFORM_WIN32_WINDOWS:
  25.            if(OSver.dwMinorVersion==0)
  26.             cout << "Windows 95" << endl;  
  27.          else
  28.             if(OSver.dwMinorVersion==10)  
  29.                cout << "Windows 98" << endl;
  30.                 else
  31.                if(OSver.dwMinorVersion==90)  
  32.                   cout << "Windows Me" << endl;
  33.          break;
  34.       case VER_PLATFORM_WIN32_NT:
  35.            if(OSver.dwMajorVersion==5 && OSver.dwMinorVersion==0)
  36.             cout << "Windows 2000" << OSver.szCSDVersion << endl;
  37.          else  
  38.             if(OSver.dwMajorVersion==5 && OSver.dwMinorVersion==1)
  39.                cout << "Windows XP " << OSver.szCSDVersion << endl;
  40.             else  
  41.                if(OSver.dwMajorVersion==5 && OSver.dwMinorVersion==2)
  42.                   if (OSver.wProductType==VER_NT_WORKSTATION)
  43.                      cout << "Windows XP Profesional x64" << endl;
  44.                   else
  45.                      cout << "Windows Server 2003" << endl;
  46.                else
  47.                   if(OSver.dwMajorVersion==6 && OSver.dwMinorVersion==0)
  48.                      if (OSver.wProductType==VER_NT_WORKSTATION)
  49.                         cout << "Windows Vista" << endl;
  50.                      else
  51.                         cout << "Windows Server 2008" << endl;
  52.                    else
  53.                      if(OSver.dwMajorVersion==6 && OSver.dwMinorVersion==1)
  54.                         if (OSver.wProductType==VER_NT_WORKSTATION)
  55.                            cout << "Windows 7" << endl;
  56.                         else
  57.                            cout << "Windows Server 2008 R2" << endl;
  58.                      else
  59.                         if(OSver.dwMajorVersion==6 && OSver.dwMinorVersion==2)
  60.                            if (OSver.wProductType==VER_NT_WORKSTATION)
  61.                               cout << "Windows 8" << endl;
  62.                            else
  63.                               cout << "Windows Server 2012" << endl;
  64.                         else
  65.                            if(OSver.dwMajorVersion<=4)
  66.                               cout << "Windows NT" << endl;
  67.                            else  
  68.                               cout << "Windows " << OSver.dwMajorVersion << OSver.dwMinorVersion << endl;
  69.          break;
  70.    }
  71.    getchar();
  72. }
  73.  

Gracias a la api GetVersionEx y con la estructura OSVERSIONINFOEX podemos obtener mucha informacion del sistema operativo.

Un ejemplo:



Saludos