System - Win-Version herausfinden ... Wie?



  • Hi Leute!

    Also wie es scheint ist der "Suchen"-Button weg, sodass ich leider nicht weiß, ob diese Frage schon einmal gestellt wurde [img]images/smiles/icon_sad.gif[/img]
    Na gut, weiß jemand von euch wie man die Windows-Version herauskriegt?
    Egal ob MFC, WinAPI oder sonst noch was, hauptsache dass es geht!

    THX im voraus!!!

    mfg
    shadow [img]images/smiles/icon_biggrin.gif[/img]



  • ->CodeGuru





  • tach,
    wenn du es noch net gefunden hast hir der code für die WIn Versions Erkennung (als komplette funktion)

    void GetWinVersion(void)
    {
        OSVERSIONINFO     verInfo = {0};
    
        verInfo.dwOSVersionInfoSize = sizeof (verInfo); 
        GetVersionEx(&verInfo); 
    
        switch (verInfo.dwPlatformId) 
        { 
        case VER_PLATFORM_WIN32_NT: //Wenn Windows = WinNT oder Win2K
           bWIN_NT = TRUE;          // dann setze bWIN_NT auf TRUE und
           bWIN_9X = FALSE;         // bWIN_9X aufFALSE
           break; 
    
        case VER_PLATFORM_WIN32_WINDOWS://Wenn Windows = Win95 - WIN98SE
                                        //und ME 
            bWIN_9X = TRUE;             // dann setze bWIN_9X auf TRUE und
            bWIN_NT = FALSE;            // dann setze bWIN_NT auf TRUE und
           break; 
    
        //default: 
          // printf ("tlist requires Windows NT or Windows 95\n"); 
           //return 1; 
        } 
    }
    

    Guß
    firefly

    [ Dieser Beitrag wurde am 03.04.2002 um 19:12 Uhr von firefly editiert. ]



  • @firefly:
    Hi, ich habe schon die Lösung aber trotzdem Danke für Deine Antwort!
    Nur, so wie du hatte ich es auch schon versucht, aber bei mir wurde Win2k nicht erkannt images/smiles/icon_confused.gif
    Darum habe ich auch diesen Thread gestartet...

    Erkennst du mit der Funktion GetVersionEx(...) Win2k???

    mfg
    shadow images/smiles/icon_biggrin.gif



  • @shadow

    Der Ansatz von firefly ist gut.
    Du mußt nur noch etwas Code ergänzen / Überprüfungen vornehmen.

    Hier mal der Code von Vinux zu diesem Thema:

    #define W95     "Windows 95"
    #define W98     "Windows 98"
    #define WME     "Windows ME"
    #define WNT4        "Windows NT 4.0"
    #define W2K     "Windows 2000"
    
    CString WinVer;
    OSVERSIONINFO winfo;
    winfo.dwOSVersionInfoSize=sizeof(OSVERSIONINFO);
    GetVersionEx(&winfo);
    if(winfo.dwPlatformId==VER_PLATFORM_WIN32_NT)
    {
       if(winfo.dwMajorVersion>=5)
          WinVer=W2K;
       else
          WinVer=WNT4;
    }
    else
       if(winfo.dwPlatformId==VER_PLATFORM_WIN32_WINDOWS)
       {
          if(winfo.dwMinorVersion<10)
             WinVer=W95;
          else
             if(winfo.dwMinorVersion<90)
                WinVer=W98;
             else
                WinVer=WME;
       }
    

    MfG veganza

    P.S: Das schreit doch nach einem Eintrag im FAQ obwohl es eigentlich nix mit MFC zu tun hat images/smiles/icon_biggrin.gif

    [ Dieser Beitrag wurde am 04.04.2002 um 10:18 Uhr von veganza editiert. ]



  • @veganza:
    Ja, du hast recht! So gehts!
    Warum bin ich nicht drauf gekommen images/smiles/icon_mad.gif

    Ich finde auch, dass dieser Eintrag in die FAQ soll. Vor allem weil ich den "Suchen"-Link nirgendwo mehr finden kann images/smiles/icon_sad.gif

    mfg
    shadow images/smiles/icon_biggrin.gif



  • Ich hätte da noch folgendes:

    CString system;
    CString typ;
    OSVERSIONINFOEX osvi;
    BOOL bOsVersionInfoEx;
    
    ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
    osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
    
    if(!(bOsVersionInfoEx = GetVersionEx((OSVERSIONINFO *) &osvi)) )
        {
            osvi.dwOSVersionInfoSize = sizeof (OSVERSIONINFO);
            if (! GetVersionEx ((OSVERSIONINFO *) &osvi) );
    
        }
        switch(osvi.dwPlatformId)
        {
        case VER_PLATFORM_WIN32_NT:
            if (osvi.dwMajorVersion <= 4)
                system = "Microsoft Windows NT";
    
            if (osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 0 )
                system = "Microsoft Windows 2000";
    
            if (osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 1 )
                system = "Microsoft Windows XP \"Whistler\"";
    
            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)
                typ = "Workstation";
            if (lstrcmpi("SERVERNT",szProductType) == 0)
                typ = "Server";
    
            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)
            {
                system = "Microsoft Windows 95";
                if (osvi.szCSDVersion[1] == 'C')
                    typ = "OSR2";
            }
    
            if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 10)
            {
                system = "Microsoft Windows 98";
                if (osvi.szCSDVersion[1] == 'A')
                    typ = "Second Edition";
            }
    
            if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 90)
            {
                system = " Mircosoft Windows ME";
            }
            break;
    
        case VER_PLATFORM_WIN32s:
            system = "Micorsoft Win32s";
            break;
        }
    

    Nur mal so, weil ich es gerade hier rumliegen hatte 😃

    [ Dieser Beitrag wurde am 06.05.2002 um 09:51 Uhr von C-O-M-M-A-N-D-E-R editiert. ]



  • @C-O-M-M-A-N-D-E-R

    Dann verschieb das doch mal endlich in den FAQ images/smiles/icon_wink.gif

    MfG veganza



  • soweit ich das gesehen hab, war es schon in der faq, werds aber nochmal machen, und ein evtl. duplikat löschen.. images/smiles/icon_biggrin.gif


Anmelden zum Antworten