Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как выяснить установлен у юзера XP SP2 или нет?


leonidus ©   (2007-07-13 11:32:00) 

Собственно сабж. Суть в том, что моя программа конфликтует с DEP, который появился только в SP2, и мне нужно определить какой SP и если это SP2 то вывести информацию о том, как правильно настроить систему. Подскажите как надежно выяснить сей факт.


Инс   (2007-07-13 14:15:00) [1]


> ну так это определение версии винды а не сервис пака...


В AdditionalInfo содержится информация о SP


Amoeba   (2007-07-13 14:11:00) [2]

Если конфликтует с DEP, то, значит, DEP на данном компьютере включен для всех программ и служб. Так что проще всего сделать нужные настройки вручную, тем более что никакой сложности в этом нет: зайти на соответствующую вкладку свойств системы и добавить твою программу в список.

И вообще, не стоит впустую тратить время. Все равно лучше настраивать вручную. Да и наличие SP2 сразу видно в свойствах системы.


Anatoly Podgoretsky   (2007-07-13 14:06:00) [3]

http://podgoretsky.com/ftp/Language/nps/ru.delphi.html#N115


leonidus   (2007-07-13 13:54:00) [4]

ну так это определение версии винды а не сервис пака...


Инс   (2007-07-13 11:39:00) [5]

unit WinVersionInfo;

interface

uses
 Windows, SysUtils, Classes;

type
 TPlatformID = (pID_Win32s, pID_Win9x, pID_WinNT, pID_Unknown);

 TWinVersionInfo = class(TComponent)
 private
   FInfo: TOSVersionInfo;
   FPlatformID: TPlatformID;
   FBuild: integer;
   FWindowsName, FAdditionalInfo: string;
   FLatformID: TPlatformID;
 protected
   procedure GetInfo; virtual;
 public
   constructor Create(AOwner: TComponent); override;
   property Info: TOSVersionInfo read FInfo;
   property PlatformID: TPlatformID read FLatformID;
   property Build: integer read FBuild;
   property WindowsName: string read FWindowsName;
   property AdditionalInfo: string read FAdditionalInfo;
 end;

implementation

{ TWinVersionInfo }

constructor TWinVersionInfo.Create(AOwner: TComponent);
begin
 inherited Create(AOwner);
 GetInfo;
end;

procedure TWinVersionInfo.GetInfo;
begin
 FPlatformID:=pID_Unknown;
 FBuild:=0;
 FWindowsName:='Unknown';
 FAdditionalInfo:='';
 FillChar(FInfo,SizeOf(TOSVersionInfo),0);
 FInfo.dwOSVersionInfoSize:=SizeOf(TOSVersionInfo);
 if GetVersionEx(FInfo) then begin;
   case FInfo.dwPlatformId of
     VER_PLATFORM_WIN32s:
       begin
         FPlatformID:=pID_Win32s;
         FWindowsName:='Windows 3.1';
       end;
     VER_PLATFORM_WIN32_WINDOWS:
       begin
         FPlatformID:=pID_Win9x;
         if FInfo.dwMinorVersion = 0 then FWindowsName:='Windows 95';
         if FInfo.dwMinorVersion = 10 then FWindowsName:='Windows 98';
         if FInfo.dwMinorVersion = 90 then FWindowsName:='Windows Me';
       end;
     VER_PLATFORM_WIN32_NT:
       begin
         FPlatformID:=pID_WinNT;
         if (FInfo.dwMajorVersion = 3) or (FInfo.dwMajorVersion = 4) then
           FWindowsName:='Windows NT '+IntToStr(FInfo.dwMajorVersion)+
             '.'+IntToStr(FInfo.dwMinorVersion);
         if FInfo.dwMajorVersion = 5 then begin
           if FInfo.dwMinorVersion = 0 then FWindowsName:='Windows 2000';
           if FInfo.dwMinorVersion = 1 then FWindowsName:='Windows XP';
           if FInfo.dwMinorVersion = 2 then FWindowsName:='Windows .NET Server 2003 family';
         end;
       end;
   end;
   FBuild:=(FInfo.dwBuildNumber and $0000FFFF);
   FAdditionalInfo:=FInfo.szCSDVersion;
 end;
end;

end.


Наверх

Титульная страница Поиск, карта сайта Написать письмо