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

Тема в разделе "Delphi - Система", создана пользователем Port111, 24 июл 2011.

  1. Port111

    Port111 Member

    Регистрация:
    17 янв 2009
    Сообщения:
    5
    Симпатии:
    0
    Здравствуйте. Подскажите как определить в Delphi какой SP установлен в Windows?
     
  2. sinkopa

    sinkopa Well-Known Member

    Регистрация:
    17 июн 2009
    Сообщения:
    344
    Симпатии:
    9
    Вариант первый: "Прочитать" значение глобальной переменной юнита SysUtils
    Код (Delphi):
    uses
    SysUtils;
    ...
    ShowMessage(Win32CSDVersion);
    Это работает если у вас WInXP или старше.


    Вариант второй:
    1. Вызвать WinAPI функцию GetVersionEx.
    Код (Delphi):
    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
     
Загрузка...

Поделиться этой страницей