Функция 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: .
Дополнение
предостерегает:
Если у меня NT, то ключа
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Version
нет по определению, есть например
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\CurrentVersion
Вопрос об удобной функции для определения версии Windows остается открытым... [000278]