Часто в программах системного плана приходится определять, какая версия операционной системы Windows установлена на компьютере. Все найденные в интернете предложения разработаны до Windows Vista. Я немного изменил одну из предложенных функций.
Предлагаю работающий алгоритм, который определяет версию Windows. Среда программирования: Borland Delphi 2007.
Описание типов:
| Код | type TWinVersion = (wvUnknown,wv95,wv98,wvME,wvNT3,wvNT4,wvW2K,wvXP,wv2003, wvVista);
|
Функция определения версии операционной системы:
| Код | 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; // Windows NT 3 4: case OSVersionInfo.DwMinorVersion of 0: if OSVersionInfo.dwPlatformId = VER_PLATFORM_WIN32_NT then Result := wvNT4 // Windows NT 4 else Result := wv95; // Windows 95 10: Result := wv98; // Windows 98 90: Result := wvME; // Windows ME end; 5: case OSVersionInfo.DwMinorVersion of 0: Result := wvW2K; // Windows 2000 1: Result := wvXP; // Windows XP 2: Result := wv2003; // Windows 2003 end; 6: Result := wvVista; // Windows Vista 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', 'Windows 2003', 'Windows Vista'); begin Result := VersStr[DetectWinVersion]; end;
|
|