Betriebsystem vergleichen



  • Wie kann ich überprüfen, ob auf dem PC Windows 2000 oder Windows XP läuft!?
    Ok, das mit GetVersion ist mir eigentlich klar.
    Jedoch komme ich leider nicht weiter...
    Möchte nur eine Sequenz programmieren, welche überprüfen soll,

    if( Betriebsystem == „Windows XP“){

    ShowMessage(„Windows XP“);

    }

    if( Betriebsystem == „Windows 2000“){

    ShowMessage(„Windows 2000“);

    }

    Wie mach ich das?



  • Versuch's mal mit GetVersionEx 😉

    OSVERSIONINFO osvi;
    osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
    GetVersionEx (&osvi);
    switch(osvi.dwMinorVersion)
    {
    case 0:
      switch(osvi.dwMajorVersion)
      {
      case 4:cout<<"Win NT, Win 2k or Win 95";break;
      case 6:cout<<"Longhorn or Vista";break;
      }
      break;
    case 1:  cout<<"Win XP";break;
    case 2:  cout<<"Windows Server 2003";break;
    case 10: cout<<"Win 98";break;
    case 90: cout<<"Win ME";break;
    default: cout<<"something other";
    }
    

    PS: Schau dir auch die Übrigen Member von OSVERSIONINFO an (oder bei "besseren" Systemen OSVERSIONINFOEX).



  • CStoll schrieb:

    Versuch's mal mit GetVersionEx 😉

    OSVERSIONINFO osvi;
    osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
    GetVersionEx (&osvi);
    switch(osvi.dwMinorVersion)
    {
    case 0:
      switch(osvi.dwMajorVersion)
      {
      case 4:cout<<"Win NT, Win 2k or Win 95";break;
      case 6:cout<<"Longhorn or Vista";break;
      }
      break;
    case 1:  cout<<"Win XP";break;
    case 2:  cout<<"Windows Server 2003";break;
    case 10: cout<<"Win 98";break;
    case 90: cout<<"Win ME";break;
    default: cout<<"something other";
    }
    

    PS: Schau dir auch die Übrigen Member von OSVERSIONINFO an (oder bei "besseren" Systemen OSVERSIONINFOEX).

    Hat das einen besonderen Grund, dass du die Minor-Abfrage um die Major-Abfrage geschachtelt hast und nicht umgekehrt?



  • masterofx32 schrieb:

    Hat das einen besonderen Grund, dass du die Minor-Abfrage um die Major-Abfrage geschachtelt hast und nicht umgekehrt?

    Ja, die Verteilung der Major- und Minor-Versionen auf die einzelnen Betriebssysteme (schau dir die Tabellen zur OSVERSIONINFO im MSDN an, dann verstehst du es).



  • CStoll schrieb:

    masterofx32 schrieb:

    Hat das einen besonderen Grund, dass du die Minor-Abfrage um die Major-Abfrage geschachtelt hast und nicht umgekehrt?

    Ja, die Verteilung der Major- und Minor-Versionen auf die einzelnen Betriebssysteme (schau dir die Tabellen zur OSVERSIONINFO im MSDN an, dann verstehst du es).

    Windows 3.1 - 3.10
    Windows 95/NT  - 4.0 (Unterscheidbar durch PlatformID)
    Windows 98  - 4.10
    Windows ME  - 4.90
    Windows 2000- 5.0
    Windows XP  - 5.1
    2003 Server - 5.2
    Vista       - 6.0
    

    In deinem Code wird Windows 2000 mit bei 95 eingereiht und alle zukünftigen Major-Versionen mit bereits vorhandener Minor-Version werden nicht eindeutig voneinander unterschieden.



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten