На главную
Подписка
Новости


Рейтинг@Mail.ru











Главная / DELPHI / Часто задаваемые вопросы и ответы на них / Win Api / Как узнать версию Windows? Сделать домашней страницей Добавить в избранное Написать писмо

Как узнать версию Windows?


Использовать функцию API GetVersionEx

function GetVersionEx(var lpVersionInformation: TOSVersionInfo): BOOL; stdcall;

Аргумент функции – структура TOSVersionInfo, содержит
DwVersionInfoSize:DWORD – заполняется как sizeof TOSVersionInfo) перед вызовом функции
DwMajorVersion:DWORD – старшая цифра версии Windows
 Win NT 3.5 = 3
 Win NT 4.0, Win9x = 4
 Win2000 = 5
 Win XP = 5
DwMinorVersion: DWORD – младшая цифра версии
 Win NT 3.51 = 51
 Win NT 4.0 = 0
 Win 95 = 0
 Win98 = 10 (вообще говоря больше 0
 Win 2000 = 0
 Win XP = 1

DwBuildNumber: DWORD
 Win NT 40 – номер билда
 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– доп. инфо, может и не быть

Комментарий от Ошин Влад (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;


Комментарий от BAHO (qvitron@mail.ru)
Считаю нужным дополнить код Ошина Влада. В NT подобных ОС надо писать так:

R.OpenKey('SOFTWARE\Microsoft\Windows NT\CurrentVersion', False);


Комментарий от Копысов Владислав (postmaster@autodealer.ru)
Для NT-подобных систем необходимо писать

R.OpenKeyReadOnly('SOFTWARE\Microsoft\Windows NT\CurrentVersion')

иначе доступ будет закрыт для пользователя с НЕ администраторскими
правами.

Комментарий от Alexandr Belayev (var_alex@fromru.com)
 Уже давно в sysutils обявлены след переменные:

//-----------------------------------------------------------------
 Win32Platform: Integer = 0;

{ Win32 OS version information -
 see TOSVersionInfo.dwMajorVersion/dwMinorVersion/dwBuildNumber }

 Win32MajorVersion: Integer = 0;
 Win32MinorVersion: Integer = 0;
 Win32BuildNumber: Integer = 0;

{ Win32 OS extra version info string -
 see TOSVersionInfo.szCSDVersion }

 Win32CSDVersion: string = '';
//-----------------------------------------------------------------

которые заполняются в процедуре procedure InitPlatformId; объявленной
в том-же sysutils. И эта функция вызывается в initialization sysutils.
Итого, для получения информации о версии ОС уже готова к использованию
без лишних телодвижений. Хотя если не используется sysutils, то не получится.

Copyright ©   "Мастера DELPHI"   E-mail:   delphi@mastak.com  http://www.delphimaster.ru
Источник получения информации: http://www.delphimaster.ru
Hosted by uCoz