windowsversion



  • Hallo,

    hab versucht die windowsversion zu ermitteln,

    bin da bei msdn auf folgendes gestoßen

    osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
    GetVersionEx (&osvi);
    

    bei dem osvi fehld dochw as.

    Was issend aran falsch

    komme einfach nicht weiter

    ciao jan



  • Guckst du hier -> http://www.c-plusplus.net/forum/viewtopic.php?t=39148

    Da stehts bestimmt drin 😉



  • ich haate nur nochd as Problem mit den Nummern udn den verschieden rückgabewerten von GetVersionEx(); in die Variable &osiv
    +

    ciao jan



  • hab ich irgendwann mal geschrieben

    AnsiString TxlOSInfo(void)
    {
       OSVERSIONINFOEX InfoStruct;
       bool bOSVERSIONINFOEX;
       AnsiString temp="";
    
       ZeroMemory(&InfoStruct,sizeof(OSVERSIONINFOEX));
       InfoStruct.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
    
       if(!(bOSVERSIONINFOEX = GetVersionEx((OSVERSIONINFO*)&InfoStruct)))
       {
          InfoStruct.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
          if(!GetVersionEx((OSVERSIONINFO*)&InfoStruct))
             return "ERROR";
       }
    
       if(InfoStruct.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)
       {
          if(InfoStruct.dwMajorVersion == 4 && InfoStruct.dwMinorVersion == 0)
          {
             temp += "Windows 95 ";
             if(InfoStruct.szCSDVersion[1] == 'C' || InfoStruct.szCSDVersion[1] == 'A')
                temp += "OSR2";
          }
          else if(InfoStruct.dwMajorVersion == 4 && InfoStruct.dwMinorVersion == 10)
          {
             temp += "Windows 98 ";
             if(InfoStruct.szCSDVersion[1] == 'A')
                temp += "SE";
          }
          else if(InfoStruct.dwMajorVersion == 4 && InfoStruct.dwMinorVersion == 90)
          {
             temp += "Windows Me";
          }
       }
       else if(InfoStruct.dwPlatformId == VER_PLATFORM_WIN32s)
       {
          temp += "Microsoft Win32s";
       }
       else if(InfoStruct.dwPlatformId == VER_PLATFORM_WIN32_NT)
       {
          if(InfoStruct.dwMajorVersion == 5 && InfoStruct.dwMinorVersion == 2)
          {
             temp += "Windows Server 2003 family";
          }
          else if(InfoStruct.dwMajorVersion == 5 && InfoStruct.dwMinorVersion == 1)
          {
             temp += "Windows XP ";
          }
          else if(InfoStruct.dwMajorVersion == 5 && InfoStruct.dwMinorVersion == 0)
          {
             temp += "Windows 2000 ";
          }
          else if(InfoStruct.dwMajorVersion <= 4)
          {
             temp += "Windows NT ";
          }
          if(bOSVERSIONINFOEX)
          {
             if(InfoStruct.wProductType == VER_NT_WORKSTATION)
             {
                if(InfoStruct.dwMajorVersion == 4)
                {
                   temp += "Workstation 4.0 ";
                }
                else if(InfoStruct.wSuiteMask & VER_SUITE_PERSONAL)
                {
                   temp += "Home Edition ";
                }
                else
                {
                   temp += "Professional ";
                }
             }
          }
          else if(InfoStruct.wProductType == VER_NT_SERVER)
          {
             if(InfoStruct.dwMajorVersion == 5 && InfoStruct.dwMinorVersion == 2)
             {
                if(InfoStruct.wSuiteMask & VER_SUITE_DATACENTER)
                {
                   temp += "Datacenter Edition ";
                }
                else if(InfoStruct.wSuiteMask & VER_SUITE_ENTERPRISE)
                {
                   temp += "Enterprise Edition ";
                }
                else if(InfoStruct.wSuiteMask & VER_SUITE_BLADE)
                {
                   temp += "Web Edition";
                }
                else
                {
                   temp += "Standart Edition ";
                }
             }
             else if(InfoStruct.dwMajorVersion == 5 && InfoStruct.dwMinorVersion == 0)
             {
                if(InfoStruct.wSuiteMask & VER_SUITE_DATACENTER)
                {
                   temp += "Datacenter Server ";
                }
                else if(InfoStruct.wSuiteMask & VER_SUITE_ENTERPRISE)
                {
                   temp += "Advanced Server ";
                }
                else
                {
                   temp += "Server ";
                }
             }
             else
             {
                if(InfoStruct.wSuiteMask & VER_SUITE_ENTERPRISE)
                {
                   temp += "Server 4.0, Enterprise Edition ";
                }
                else
                {
                   temp += "Server 4.0 ";
                }
             }
          }
       }
       return temp;
    }
    

    sollte eigendlich funken

    Meep Meep



  • Bei mir kommen immer die fehlermeldung:
    Undefiniertes Symbol 'VER_SUITE_PERSONAL'
    Undefiniertes Symbol 'VER_SUITE_BLADE'

    Was muss ich da einbinden das es funktioniert?



  • die sind in der winnt.h definiert. Zeile 915 und 916 (BCB6)

    Meep Meep


Anmelden zum Antworten