System Info



  • ich brauche für ein Diganose Tool (VC++) angaben über das Betriebssystem
    mit den funktionen get GetVersionEx und GetWindowsDirectory bekommt man
    irgendwelche Codes dafür zurück

    Gibt es da vielleicht irgend eine andere variante (z.B.die das Betriebssystem als String zurück gibt)?
    wenn nicht welches Betriebssystem liefert welchen code?



  • Naja weil du neu bist, sag ich mal nix:

    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)
    ",
                    osvi.dwMajorVersion,
                    osvi.dwMinorVersion,
                    osvi.szCSDVersion,
                    osvi.dwBuildNumber & 0xFFFF);
    
            }
            else
            {
                printf("%s (Build %d]
    ",
                    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;
        }
    

    In der Variable system steht nun das Betriebssystem
    und in typ steht drin z.B.: Second Edition...

    Nächstes mal schaust du aber bitte in die FAQ, da steht das nämlich schon->> HIER 😉



  • danke!


Anmelden zum Antworten