Как определить какой Service Pack установлен в Windows?

  • Автор темы Port111
  • Дата начала
P

Port111

Здравствуйте. Подскажите как определить в Delphi какой SP установлен в Windows?
 
S

sinkopa

Здравствуйте. Подскажите как определить в Delphi какой SP установлен в Windows?
Вариант первый: "Прочитать" значение глобальной переменной юнита SysUtils
Код:
uses
SysUtils;
...
ShowMessage(Win32CSDVersion);
Это работает если у вас WInXP или старше.


Вариант второй:
1. Вызвать WinAPI функцию GetVersionEx.
Код:
type
TOSVersionInfoEx = packed record
dwOSVersionInfoSize: DWORD;
dwMajorVersion: DWORD;
dwMinorVersion: DWORD;
dwBuildNumber: DWORD;
dwPlatformId: DWORD;
szCSDVersion: array[0..127] of AnsiChar;
wServicePackMajor: WORD;
wServicePackMinor: WORD;
wSuiteMask: WORD;
wProductType: Byte;
wReserved: Byte;
end;

...
var
osvi : TOSVersionInfoEx;
begin
ZeroMemory(@osvi, sizeof(TOSVersionInfoEx));
osvi.dwOSVersionInfoSize := sizeof(TOSVersionInfoEx);
GetVersionEx(osvi);
...
end;
2. Обработать значения полей, szCSDVersion, wServicePackMajor и wServicePackMinor структуры TOSVersionInfoEx.
Про функцию GetVersionEx читаем тут:
Про структуру OSVERSIONINFOEX читаем тут:

Вариант третий: (для особо ленивых) - не заморачиваться ;)
Вот тут Демо проект (Delphi 7)
к статье Питера Джонсона
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!