Как узнать версию Windows 1
Как узнать версию Windows 1
Как узнать версию Windows Использовать функцию API GetVersionEx function GetVersionEx(var lpVersionInformation: TOSVersionInfo): BOOL; stdcall; Аргумент функции - структура TOSVersionInfo, содержит DwVersionInfoSize:DWORD - заполняется как sizeof TOSVersionInfo) перед вызовом функции DwMajorVersion:DWORD - старшая цифра версии Windows Windows 95 - 4 Windows 98 - 4 Windows Me - 4 Windows NT 3.51 - 3 Windows NT 4.0 - 4 Windows 2000 - 5 Windows XP - 5 DwMinorVersion: DWORD - младшая цифра версии Windows 95 - 0 Windows 98 - 10 Windows Me - 90 Windows NT 3.51 - 51 Windows NT 4.0 - 0 Windows 2000 - 0 Windows XP - 1 DwBuildNumber: DWORD Win NT 4 - номер билда Win 9x - старший байт - старшая и младшая цифры версии / младший - номер билда dwPlatformId: DWORD VER_PLATFORM_WIN32s Win32s on Windows 3.1. VER_PLATFORM_WIN32_WINDOWS Win32 on Windows 9x VER_PLATFORM_WIN32_NT Win32 on Windows NT, 2000 SzCSDVersion:DWORD NT - содержит PСhar с инфо о установленном ServicePack 9x - доп. инфо, может и не быть ++++++++++++++++++++++++++++++++++++++++++++++++++++ type TWinVersion = (wvUnknown,wv95,wv98,wvME,wvNT3,wvNT4,wvW2K,wvXP); function DetectWinVersion : TWinVersion; var OSVersionInfo : TOSVersionInfo; begin Result := wvUnknown; OSVersionInfo.dwOSVersionInfoSize := sizeof(TOSVersionInfo); if GetVersionEx(OSVersionInfo) then begin case OSVersionInfo.DwMajorVersion of 3: Result := wvNT3; 4: case OSVersionInfo.DwMinorVersion of 0: if OSVersionInfo.dwPlatformId = VER_PLATFORM_WIN32_NT then Result := wvNT4 else Result := wv95; 10: Result := wv98; 90: Result := wvME; end; 5: case OSVersionInfo.DwMinorVersion of 0: Result := wvW2K; 1: Result := wvXP; end; end; end; end; function DetectWinVersionStr : string; const VersStr : array[TWinVersion] of string = ( 'Unknown', 'Windows 95', 'Windows 98', 'Windows ME', 'Windows NT 3', 'Windows NT 4', 'Windows 2000', 'Windows XP'); begin Result := VersStr[DetectWinVersion]; end; procedure TForm1.Button1Click(Sender: TObject); begin Ver := DetectWinVersion; Label1.Caption := IntToStr(Ord(DetectWinVersion)); Label2.Caption := DetectWinVersionStr; end; +++++++++++++++++++++++++++++++ глобальные переменные Win32Platform (в справке), Win32MajorVersion, Win32MinorVersion, Win32BuildNumber (в модуле SysUtils). Инициализируются они автоматически, остается только проверить их. ****************************************************** Комментарий от Ошин Влад (RV@fss.moris.ru) я делаю так R:=TRegistry.Create; R.RootKey:=HKEY_LOCAL_MACHINE; R.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion', False); No:=R.ReadString('Version'); //ну и все прочее из этого ключа R.Free;