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

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

sinkopa

Well-Known Member
#2
Здравствуйте. Подскажите как определить в 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 читаем тут: http://msdn.microsoft.com/en-us/library/ms724451(VS.85).aspx
Про структуру OSVERSIONINFOEX читаем тут: http://msdn.microsoft.com/en-us/library/ms724833(VS.85).aspx

Вариант третий: (для особо ленивых) - не заморачиваться ;)
Вот тут Демо проект (Delphi 7) http://www.delphidabbler.com/zip/demos/article-23-demo.zip
к статье Питера Джонсона How to get operating system version information