![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как выяснить установлен у юзера 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.