Jak wykryć wersję Windowsa?

0

Jak rozpoznać wersję Windows-a. Poniższa funkcja, którą napisałem rozpoznaje tylko czy dany Windows to:
Win3.11, Win95, WinNT, Win2k, WinXP

a co z Win98 oraz WinME ???

TWindowsVersion = (wvUnknown, wvWin311, wvWin95, wvWinNT, wvWin2k, wvWinXP);

FUNCTION TTW_Spis.GetWindowsVersion: TWindowsVersion;
VAR
  OSVerInfo: TOSVersionInfo;
BEGIN
  Result := wvUnknown;
  OSVerInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
  IF GetVersionEx(OSVerInfo) THEN
    WITH OSVerInfo DO
      CASE DwPlatformId OF
        VER_PLATFORM_WIN32s:
          Result := wvWin311;
        VER_PLATFORM_WIN32_WINDOWS:
          Result := wvWin95;//tutaj chcę obsługę co do Win98, WinME (tak jak poniżej)
        VER_PLATFORM_WIN32_NT:
          BEGIN
            Result := wvWinNT;
            IF (dwMajorVersion = 5) AND (dwMinorVersion = 0) THEN
              Result := wvWin2k;
            IF (dwMajorVersion >= 5) AND (dwMinorVersion >= 1) THEN
              Result := wvWinXP;
          END;
      END;
END;

DZIĘKUJĘ ZA POMOC!

0

Może wystarczy ci pobrać wartość z rejestru, klucz bodaj:
[code]HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion[/code]
a wartość [code]WinVer[/code] lub/i [code]ProductName[/code] ... Może ci wystarczy (zasadniczo normalny użytkownik wartości tej nie zmienia, bo i po co?)...
Ale to już jednak nie daje pełnej gwarancji...

0

w MSDN jest dokładny opis

0

Było o tym sporo razy kiedyś na forum, wystarczy poszukać. Powinieneś też poczytać w MSDN-ie o GetVersionEx. To dobra lektura.

var
  OSinfo: OSVERSIONINFOA;
  MyOS: String;

begin

   try
    OSinfo.dwOSVersionInfoSize := SizeOf(OSVERSIONINFOA);
    GetVersionEx(OSinfo);

    case StrToInt(IntToStr(OSinfo.dwMajorVersion) + 
                  IntToStr(OSinfo.dwMinorVersion)) of
         4:   MyOS := 'Windows 95' ;
         410: MyOS := 'Windows 98' ;
         490: MyOS := 'Windows Me' ;
         351: MYOS := 'Windows NT 3.51';
         40:  MyOS := 'Windows NT 4.0';
         50:  MyOS := 'Windows 2000';
         51:  MyOS := 'Windows XP';
         52:  MyOS := 'Windows Server 2003';
        else  MyOS := 'Nieznany';
     end;

   except
    MyOS := 'Nie uzyskano info';
   end;

end;

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0