Посмотрите в электронной справке API и модуле WINPROCS описание и декларацию функции GetVersion: LongInt;
Функция GetVersion возвращает текущие номера версий операционных систем Windows и MS-DOS.
Примечание: в оригинальной документации по API-функциям есть ошибка: возвращаются обе версии Win - общая и сборки (major/minor)!
Результаты использования функции:
Windows 3.1 возвращает 3.1, WIN95 возвращает 3.95
Примечание Под windows 95 и выше используйте функцию GetVersionExДополнение
К большому сожалению с помощью функции GetVersionEx нельзя определить "точно" версию Windows. Можно у знать номер, описание платформы (Win32&95, Win32, nonWin32), но назвать ее сложно. Возвращаемый результат имеет такую структуру:
function GetWinVersion:String; {не забудьте подключить модуль Registry} var Reg:TRegIniFile; {ипользуем TRegIniFile, а не TRegistry для совместимости с Win 3.1 и ниже} HK: HKEY; { type HKEY = Integer } begin // Интересующие нас данные лежат в LOCAL_MACHINE... RegCreateKey(HKEY_LOCAL_MACHINE,'Software\Microsoft\Windows',HK); Reg:=TRegIniFile.Create(''); Reg.RootKey:=HK; // Читаем версию Windows... GetWinVersion:=Reg.ReadString('CurrentVersion','Version',''); Reg.Free; end; |
Igor Popov. E-mail to: igp@ukrpost.net.
Дополнение
Vasili Pincuk предостерегает:
Если у меня NT, то ключа
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Version
нет по определению, есть например
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\CurrentVersion
Вопрос об удобной функции для определения версии Windows остается открытым... [000278]