Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.03.09;
Скачать: CL | DM;

Вниз

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

 
leonidus ©   (2007-07-13 11:32) [0]

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


 
Инс ©   (2007-07-13 11:39) [1]

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.


 
leonidus ©   (2007-07-13 13:54) [2]

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


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

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


 
Amoeba ©   (2007-07-13 14:11) [4]

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

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


 
Инс ©   (2007-07-13 14:15) [5]


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


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



Страницы: 1 вся ветка

Текущий архив: 2008.03.09;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.016 c
11-1184839791
Vedun
2007-07-19 14:09
2008.03.09
Таблица как в Excel


2-1202875687
Shousheng
2008-02-13 07:08
2008.03.09
memo добавление текста


11-1183368735
Delphuk
2007-07-02 13:32
2008.03.09
Ошибка после нескольких вызывов MCK формы из DLL


15-1201890319
Kerk
2008-02-01 21:25
2008.03.09
Посоветуйте что о буддизме почитать


2-1202745191
antonn
2008-02-11 18:53
2008.03.09
доступ к рекорду в другом окне