Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
диплом-1.doc
Скачиваний:
84
Добавлен:
07.12.2018
Размер:
5.47 Mб
Скачать

Список использованных источников

  1. Защита данных в компьютерных сетях. – Режим доступа: http://vsptus.ru/6.html/ .

  2. Медведовский И. Д., Практическое применение международного стандарта безопасности информационных систем ISO 17799, 2003.

  3. Милославская Н.Г., Толстой А.И., Интрасети: обнаружение вторжений: Учеб. пособие для вузов. — М.: ЮНИТИ-ДАНА, 2001. — 587 с.

  4. Гречанинов А. DMZ - Каменный мешок для хакера, 2002. – Режим доступа: http://gretchaninov.com/.

  5. Тутубалин А. Распределенные методы обнаружения спама, 2003. – Режим доступа: http://www.lexa.ru/lexa/.

  6. http://www.microsoft.com/technet/security/bulletin/ .

  7. Кландер Л. Hacker Proof: полное руководство по безопасности компьютера, - Минск: «Попурри», 2002.

  8. Медведовский И.Д., Семьянов П.В., Леонов Д.Г. Атака на Internet, “ДМК”,1999.

  9. Knight B. 10 Steps to Securing your SQL Server. – Режим доступа: http://www.sql.ru/.

  10. “Лаборатория Касперского”. – Режим доступа: http://www.kaspersky.ru/.

  11. Система Check Point Firewall-1. – Режим доступа: http://www.cnews.ru/ .

  12. Lewis M. Creating a Manageable Security. – Режим доступа: http://www.sql.ru/articles/Publications.shtml/.

  13. Всероссийский научно-исследовательский институт автоматизации управления в непромышленной сфере, “МСВС 3.0”. – Режим доступа: http://www.vniins.ru/ .

  14. Тюлин А., Жуков И., Ефанов Д. Защищенная операционная система МСВС 3.0. – Режим доступа: http://www.osp.ru/os/.

  15. Ефанов Д.В., Жуков И.Ю. Функциональные возможности ВОС МСВС 3.0, Москва, ВНИИНС.

  16. Ефанов Д.В., Жуков И.Ю. Домен МСВС как основа построения защищенных АС, Москва, ВНИИНС.

  17. “Рускард”. – Режим доступа: http://www.ruscard.org .

  18. Dr.Web для МСВС 3.0. – Режим доступа: http://www.antiviruses.ru .

  19. Бакаева Т.Н., Непомнящий А.В., Ткачев И.И., В помощь дипломнику: Методическая разработка к разделу «Безопасность и экологичность» в дипломном проекте (работе) для всех специальностей. Таганрог: ТРТУ, 2001. – 51с.

  20. Учебно-методическое пособие к выполнению практической работы «Оценка и меры по снижению тяжести и напряженности трудового процесса» по курсу «Безопасность жизнедеятельности». Таганрог: ТРТУ, 2003. – 28с.

  21. ГОСТ 7.32-2001 Система стандартов по информации, библиотечному и издательскому делу. Отчет о научно-исследовательской работе. Структура и правила оформления.

Приложение а Листинг программы

unit mainForm;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ComCtrls, Registry, StdCtrls, Spin, ShellApi, Mask, DB, ADODB,

JvComponentBase, JvBaseDlg, JvWinDialogs, ImgList, ExtCtrls;

const

//установки по умолчанию

CCAD = 0;

CRestrictAnonymous = 1;

CAutoShare = 0;

CScreenSaver = 1;

CScreenSaverPass = 1;

CMSSQLPort = 1450;

CXP_CMDShell = 0;

CAuditLevel = 3;

type

Tmain = class(TForm)

ListView1: TListView;

GB_FSType: TGroupBox;

GB_CADSettings: TGroupBox;

CAD: TCheckBox;

StatusBar: TStatusBar;

Apply: TButton;

Cancel: TButton;

Recommend: TButton;

RestrictAnonymous: TCheckBox;

AutoShare: TCheckBox;

ScreenSaver: TCheckBox;

GB_ScreenSaver: TGroupBox;

ScreenSaverTime: TSpinEdit;

Label1: TLabel;

Label2: TLabel;

ScreenSaverPass: TCheckBox;

GB_Policy: TGroupBox;

Label3: TLabel;

Label4: TLabel;

OpenSecurityOptions: TButton;

Label5: TLabel;

OpenUserRights: TButton;

GB_MSSQL: TGroupBox;

Label6: TLabel;

MSSQLPort: TSpinEdit;

ADOConnection: TADOConnection;

ADOQuery: TADOQuery;

XP_CMDShell: TCheckBox;

AuditLevel: TComboBox;

Label7: TLabel;

JvObjectPropertiesDialog: TJvObjectPropertiesDialog;

Label8: TLabel;

OpenSecuritySettingsSystem32: TButton;

ImageList: TImageList;

CADImage: TImage;

RestrictAnonymousImage: TImage;

AutoShareImage: TImage;

ScreenSaverImage: TImage;

ScreenSaverPassImage: TImage;

MSSQLPortImage: TImage;

AuditLevelImage: TImage;

XP_CMDShellImage: TImage;

procedure FormShow(Sender: TObject);

procedure CancelClick(Sender: TObject);

procedure CADClick(Sender: TObject);

procedure ApplyClick(Sender: TObject);

procedure RestrictAnonymousClick(Sender: TObject);

procedure AutoShareClick(Sender: TObject);

procedure ScreenSaverClick(Sender: TObject);

procedure ScreenSaverPassClick(Sender: TObject);

procedure ScreenSaverTimeChange(Sender: TObject);

procedure OpenSecurityOptionsClick(Sender: TObject);

procedure OpenUserRightsClick(Sender: TObject);

procedure ScreenSaverTimeExit(Sender: TObject);

procedure MSSQLPortChange(Sender: TObject);

procedure XP_CMDShellClick(Sender: TObject);

procedure RecommendClick(Sender: TObject);

procedure AuditLevelChange(Sender: TObject);

procedure OpenSecuritySettingsSystem32Click(Sender: TObject);

private

{ Private declarations }

procedure CheckFS;

procedure GetCADSettings;

procedure SetCADSettings;

procedure GetRestrictAnonymousSettings;

procedure SetRestrictAnonymousSettings;

procedure GetAutoShareSettings;

procedure SetAutoShareSettings;

procedure GetScreenSaverSettings;

procedure SetScreenSaverSettings;

procedure GetMSSQLPortSettings;

procedure SetMSSQLPortSettings;

procedure GetXP_CMDShellSettings;

procedure SetXP_CMDShellSettings;

procedure GetAuditLevelSettings;

procedure SetAuditLevelSettings;

procedure CheckApply;

public

{ Public declarations }

end;

var

main: Tmain;

//переменные для сохранения старых настроек и реализации функции "Отмена"

CAD_Old, RestrictAnonymous_Old, AutoShare_Old:integer;

ScreenSaver_Old, ScreenSaverPass_Old, ScreenSaverTime_Old:integer;

MSSQLPort_Old, XP_CMDShell_Old, AuditLevel_Old:integer;

implementation

{$R *.dfm}

//процедура проверки типа файловой системы

procedure Tmain.CheckFS();

var

VolumeName,

FileSystemName : array [0..MAX_PATH-1] of Char;

VolumeSerialNo : DWord;

MaxComponentLength,FileSystemFlags: Cardinal;

i: Char;

C: String;

ListItem:TListItem;

begin

for i := 'B' to 'Z' do //начинаем с B, чтобы не обращалось к дисководу

begin

C := i+':\';

if (GetVolumeInformation(PChar(C),VolumeName,MAX_PATH,@VolumeSerialNo,

MaxComponentLength,FileSystemFlags, FileSystemName,MAX_PATH)) and

(GetDriveType(PChar(C))<>DRIVE_REMOTE)

then begin

ListItem:=ListView1.Items.Add();

ListItem.Caption:=C;

ListItem.SubItems.Add(FileSystemName);

if FileSystemName='NTFS' then ListItem.ImageIndex:=0

else ListItem.ImageIndex:=1;

end;

end;

end;

// получает, отмечает степень соответствия рекомендованным установкам и

//выводит информацию об использовании комбинации клавиш Ctrl+Alt+Del при входе

procedure Tmain.GetCADSettings;

var

reg:TRegistry;

value:integer;

begin

reg:=TRegistry.Create;

try

reg.RootKey:=HKEY_LOCAL_MACHINE;

if not reg.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system\', False) then MessageDlg('Невозможно открыть ключ реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system\',mtError, [mbOk], 0);

if reg.ValueExists('DisableCAD') then begin

value:=reg.ReadInteger('DisableCAD');

CAD_Old:=value;

CAD.Tag:=value;

if value=1 then begin

CAD.Checked:=True;

CAD.Hint:='Включено';

end else begin

CAD.Checked:=False;

CAD.Hint:='Выключено';

end;

end

else begin

CAD_Old:=-1;

CAD.Tag:=-1;

CAD.State:=cbGrayed;

CAD.Hint:='Не установлено';

end;

finally

reg.Free;

end;

if CAD.Tag=CCAD then ImageList.GetIcon(0, CADImage.Picture.Icon)

else ImageList.GetIcon(1, CADImage.Picture.Icon);

end;

//производит изменение параметра в реестре в соответствии с произведенными настройками

procedure Tmain.SetCADSettings;

var

reg:TRegistry;

begin

reg:=TRegistry.Create;

try

reg.RootKey:=HKEY_LOCAL_MACHINE;

if not reg.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system\', False) then MessageDlg('Невозможно открыть ключ реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system\',mtError, [mbOk], 0);

CAD_Old:=CAD.Tag;

if CAD.Tag<>-1 then reg.WriteInteger('DisableCAD',CAD.Tag)

else reg.DeleteValue('DisableCAD');

finally

reg.Free;

end;

end;

//получает, отмечает степень соответствия рекомендованным установкам и

//выводит информацию о настройке анонимного сетевого доступа к системе

procedure Tmain.GetRestrictAnonymousSettings;

var

reg:TRegistry;

value:integer;

begin

reg:=TRegistry.Create;

try

reg.RootKey:=HKEY_LOCAL_MACHINE;

if not reg.OpenKey('\SYSTEM\CurrentControlSet\Control\Lsa', False) then MessageDlg('Невозможно открыть ключ реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa', mtError, [mbOk], 0);

if not reg.ValueExists('restrictanonymous') then reg.WriteInteger('restrictanonymous', 0);

value:=reg.ReadInteger('restrictanonymous');

RestrictAnonymous_Old:=value;

RestrictAnonymous.Tag:=value;

if value=1 then begin

RestrictAnonymous.Checked:=True;

RestrictAnonymous.Hint:='Включено';

end else begin

RestrictAnonymous.Checked:=False;

RestrictAnonymous.Hint:='Выключено';

end;

finally

reg.Free;

end;

if RestrictAnonymous.Tag=CRestrictAnonymous then ImageList.GetIcon(0, RestrictAnonymousImage.Picture.Icon)

else ImageList.GetIcon(1, RestrictAnonymousImage.Picture.Icon);

end;

//производит изменение параметра в реестре в соответствии с произведенными настройками

procedure Tmain.SetRestrictAnonymousSettings;

var

reg:TRegistry;

begin

reg:=TRegistry.Create;

try

reg.RootKey:=HKEY_LOCAL_MACHINE;

if not reg.OpenKey('\SYSTEM\CurrentControlSet\Control\Lsa', False) then MessageDlg('Невозможно открыть ключ реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa', mtError, [mbOk], 0);

RestrictAnonymous_Old:=RestrictAnonymous.Tag;

reg.WriteInteger('restrictanonymous',RestrictAnonymous.Tag)

finally

reg.Free;

end;

end;

//получает, отмечает степень соответствия рекомендованным установкам и

//выводит информацию о настройке доступности общих ресурсов (ADMIN$, C$, D$ и т.д.)

procedure Tmain.GetAutoShareSettings;

var

reg:TRegistry;

value:integer;

begin

reg:=TRegistry.Create;

try

reg.RootKey:=HKEY_LOCAL_MACHINE;

if not reg.OpenKey('\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters', False) then MessageDlg('Невозможно открыть ключ реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters', mtError, [mbOk], 0);

if not reg.ValueExists('AutoShareWks') then reg.WriteInteger('AutoShareWks', 1);

value:=reg.ReadInteger('AutoShareWks');

AutoShare_Old:=value;

AutoShare.Tag:=value;

if value=1 then begin

AutoShare.Checked:=True;

AutoShare.Hint:='Включено';

end else begin

AutoShare.Checked:=False;

AutoShare.Hint:='Выключено';

end;

finally

reg.Free;

end;

if AutoShare.Tag=CAutoShare then ImageList.GetIcon(0, AutoShareImage.Picture.Icon)

else ImageList.GetIcon(1, AutoShareImage.Picture.Icon);

end;

//производит изменение параметра в реестре в соответствии с произведенными настройками

procedure Tmain.SetAutoShareSettings;

var

reg:TRegistry;

begin

reg:=TRegistry.Create;

try

reg.RootKey:=HKEY_LOCAL_MACHINE;

if not reg.OpenKey('\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters', False) then MessageDlg('Невозможно открыть ключ реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters', mtError, [mbOk], 0);

AutoShare_Old:=AutoShare.Tag;

reg.WriteInteger('AutoShareWks',AutoShare.Tag)

finally

reg.Free;

end;

end;

//получает, отмечает степень соответствия рекомендованным установкам и

//выводит информацию о настройке параметров хранителя экрана

procedure Tmain.GetScreenSaverSettings;

var

reg:TRegistry;

value:string;

begin

reg:=TRegistry.Create;

try

reg.RootKey:=HKEY_CURRENT_USER;

if not reg.OpenKey('\Control Panel\Desktop', False) then MessageDlg('Невозможно открыть ключ реестра HKEY_CURRENT_USER\Control Panel\Desktop', mtError, [mbOk], 0);

value:=reg.ReadString('ScreenSaveActive');

ScreenSaver_Old:=StrToInt(value);

ScreenSaver.Tag:=StrToInt(value);

if value='1' then begin

ScreenSaver.Checked:=True;

ScreenSaver.Hint:='Включено';

ScreenSaverPass.Enabled:=True;

ScreenSaverTime.Enabled:=True;

Label1.Enabled:=True;

Label2.Enabled:=True;

end else begin

ScreenSaver.Checked:=False;

ScreenSaver.Hint:='Выключено';

ScreenSaverPass.Enabled:=False;

ScreenSaverTime.Enabled:=False;

Label1.Enabled:=False;

Label2.Enabled:=False;

end;

value:=reg.ReadString('ScreenSaverIsSecure');

ScreenSaverPass_Old:=StrToInt(value);

ScreenSaverPass.Tag:=StrToInt(value);

if value='1' then begin

ScreenSaverPass.Checked:=True;

ScreenSaverPass.Hint:='Включено';

end else begin

ScreenSaverPass.Checked:=False;

ScreenSaverPass.Hint:='Выключено';

end;

value:=reg.ReadString('ScreenSaveTimeOut');

ScreenSaverTime_Old:=StrToInt(value) div 60;

ScreenSaverTime.Tag:=StrToInt(value) div 60;

ScreenSaverTime.Value:=StrToInt(value) div 60;

ScreenSaverTime.Hint:='Хранитель экрана включится через '+IntToStr(ScreenSaverTime.Tag)+' мин. неактивности компьютера';

finally

reg.Free;

end;

if ScreenSaver.Tag=CScreenSaver then ImageList.GetIcon(0, ScreenSaverImage.Picture.Icon)

else ImageList.GetIcon(1, ScreenSaverImage.Picture.Icon);

if ScreenSaverPass.Tag=CScreenSaverPass then ImageList.GetIcon(0, ScreenSaverPassImage.Picture.Icon)

else ImageList.GetIcon(1, ScreenSaverPassImage.Picture.Icon);

end;

//производит изменение параметра в реестре в соответствии с произведенными настройками

procedure Tmain.SetScreenSaverSettings;

var

reg:TRegistry;

begin

reg:=TRegistry.Create;

try

reg.RootKey:=HKEY_CURRENT_USER;

if not reg.OpenKey('\Control Panel\Desktop', False) then MessageDlg('Невозможно открыть ключ реестра HKEY_CURRENT_USER\Control Panel\Desktop', mtError, [mbOk], 0);

ScreenSaver_Old:=ScreenSaver.Tag;

reg.WriteString('ScreenSaveActive',IntToStr(ScreenSaver.Tag));

ScreenSaverPass_Old:=ScreenSaverPass.Tag;

reg.WriteString('ScreenSaverIsSecure',IntToStr(ScreenSaverPass.Tag));

ScreenSaverTime_Old:=ScreenSaverTime.Tag;

// reg.WriteString('ScreenSaveTimeOut',IntToStr(ScreenSaverTime.Tag*60));

SystemParametersInfo(SPI_SETSCREENSAVETIMEOUT,ScreenSaverTime.Tag*60,nil,SPIF_UPDATEINIFILE);

if ScreenSaver.Tag=1 then

reg.WriteString('SCRNSAVE.EXE','C:\WINDOWS\system32\scrnsave.scr')

else

if reg.ValueExists('SCRNSAVE.EXE') then reg.DeleteValue('SCRNSAVE.EXE');

finally

reg.Free;

end;

end;

//получает, отмечает степень соответствия рекомендованным установкам и

//выводит информацию о номере слушающего порта MS SQL сервера

procedure Tmain.GetMSSQLPortSettings;

var

reg:TRegistry;

value:string;

begin

reg:=TRegistry.Create;

try

reg.RootKey:=HKEY_LOCAL_MACHINE;

if not reg.OpenKey('\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\SuperSocketNetLib\Tcp', False) then begin

MessageDlg('Невозможно открыть ключ реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\SuperSocketNetLib\Tcp', mtError, [mbOk], 0);

MSSQLPort.Enabled:=False;

Label6.Enabled:=False;

end else begin

value:=reg.ReadString('TcpPort');

MSSQLPort_Old:=StrToInt(value);

MSSQLPort.Tag:=StrToInt(value);

MSSQLPort.Value:=StrToInt(value);

MSSQLPort.Hint:='MS SQL Server принимает соединения на '+value+' порту';

end;

finally

reg.Free;

end;

if (MSSQLPort.Enabled) then begin

if (MSSQLPort.Tag=CMSSQLPort) then ImageList.GetIcon(0, MSSQLPortImage.Picture.Icon)

else ImageList.GetIcon(1, MSSQLPortImage.Picture.Icon);

end;

end;

//производит изменение параметра в реестре в соответствии с произведенными настройками

procedure Tmain.SetMSSQLPortSettings;

var

reg:TRegistry;

begin

reg:=TRegistry.Create;

try

reg.RootKey:=HKEY_LOCAL_MACHINE;

if not reg.OpenKey('\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\SuperSocketNetLib\Tcp', False) then MessageDlg('Невозможно открыть ключ реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\SuperSocketNetLib\Tcp', mtError, [mbOk], 0);

MSSQLPort_Old:=MSSQLPort.Tag;

reg.WriteString('TcpPort',IntToStr(MSSQLPort.Tag))

finally

reg.Free;

end;

end;

//получает, отмечает степень соответствия рекомендованным установкам и

//выводит информацию о настройке расширенной хранимой процедуры xp_cmdshell

procedure Tmain.GetXP_CMDShellSettings;

begin

if MSSQLPort.Enabled then begin

try

try

ADOConnection.Open;

ADOQuery.SQL.Clear;

ADOQuery.SQL.Add('select id from dbo.sysobjects where id = object_id('+QuotedStr('[dbo].[xp_cmdshell]')+')');

ADOQuery.Open;

if ADOQuery.State=dsInactive then XP_CMDShell.Enabled:=False

else

if ADOQuery.RecordCount>0 then begin

XP_CMDShell_Old:=1;

XP_CMDShell.Tag:=1;

XP_CMDShell.Checked:=True;

XP_CMDShell.Hint:='Включено'

end else begin

XP_CMDShell_Old:=0;

XP_CMDShell.Tag:=0;

XP_CMDShell.Checked:=False;

XP_CMDShell.Hint:='Выключено'

end;

except

MessageDlg('Не удалось подключиться к локальной базе данных "." на компьютере', mtError, [mbOk], 0);

XP_CMDShell.Enabled:=False

end;

finally

ADOQuery.Close;

ADOConnection.Close;

end;

end

else XP_CMDShell.Enabled:=False;

if (XP_CMDShell.Enabled) then begin

if (XP_CMDShell.Tag=CXP_CMDShell) then ImageList.GetIcon(0, XP_CMDShellImage.Picture.Icon)

else ImageList.GetIcon(1, XP_CMDShellImage.Picture.Icon);

end;

end;

//производит изменение параметра в реестре в соответствии с произведенными настройками

procedure Tmain.SetXP_CMDShellSettings;

begin

if XP_CMDShell.Enabled then begin

if XP_CMDShell.Tag<>XP_CMDShell_Old then begin

try

try

ADOConnection.Open;

ADOQuery.SQL.Clear;

if XP_CMDShell.Checked then

ADOQuery.SQL.Add('exec sp_addextendedproc '+QuotedStr('xp_cmdshell')+', '+QuotedStr('xplog70.dll'))

else

ADOQuery.SQL.Add('exec sp_dropextendedproc '+QuotedStr('[dbo].[xp_cmdshell]'));

ADOQuery.ExecSQL;

except

MessageDlg('Не удалось подключиться к локальной базе данных "." на компьютере', mtError, [mbOk], 0);

XP_CMDShell.Enabled:=False

end;

finally

ADOConnection.Close;

XP_CMDShell_Old:=XP_CMDShell.Tag

end;

end;

end;

end;

//получает, отмечает степень соответствия рекомендованным установкам и

//выводит информацию о настройке уровня аудита MS SQL сервера

procedure Tmain.GetAuditLevelSettings;

var

reg:TRegistry;

value:integer;

begin

if MSSQLPort.Enabled then begin

reg:=TRegistry.Create;

try

reg.RootKey:=HKEY_LOCAL_MACHINE;

if not reg.OpenKey('\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer', False) then MessageDlg('Невозможно открыть ключ реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer', mtError, [mbOk], 0);

value:=reg.ReadInteger('AuditLevel');

AuditLevel_Old:=value;

AuditLevel.ItemIndex:=value;

finally

reg.Free;

end;

end

else begin

AuditLevel.Enabled:=False;

Label7.Enabled:=False;

end;

if (AuditLevel.Enabled) then begin

if (AuditLevel.ItemIndex=CAuditLevel) then ImageList.GetIcon(0, AuditLevelImage.Picture.Icon)

else ImageList.GetIcon(1, AuditLevelImage.Picture.Icon);

end;

end;

//производит изменение параметра в реестре в соответствии с произведенными настройками

procedure Tmain.SetAuditLevelSettings;

var

reg:TRegistry;

begin

reg:=TRegistry.Create;

try

reg.RootKey:=HKEY_LOCAL_MACHINE;

if not reg.OpenKey('\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer', False) then MessageDlg('Невозможно открыть ключ реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer', mtError, [mbOk], 0);

AuditLevel_Old:=AuditLevel.ItemIndex;

reg.WriteInteger('AuditLevel',AuditLevel.ItemIndex)

finally

reg.Free;

end;

end;

//процедура, вызываемая при открытии формы, задесь устанавливаем параметры оп умолчанию

//вызываем соответствеющие процедуры получения настроек

procedure Tmain.FormShow(Sender: TObject);

begin

MSSQLPort_Old:=1433;

AuditLevel_Old:=0;

XP_CMDShell_Old:=0;

CheckFS;

GetCADSettings;

GetRestrictAnonymousSettings;

GetAutoShareSettings;

GetScreenSaverSettings;

GetMSSQLPortSettings;

GetXP_CMDShellSettings;

GetAuditLevelSettings;

end;

//процедура обработки функции "Отмена"

procedure Tmain.CancelClick(Sender: TObject);

begin

case CAD_Old of

1: begin

CAD.Checked:=True;

CAD.Hint:='Включено';

end;

0: begin

CAD.Checked:=False;

CAD.Hint:='Выключено';

end;

-1: begin

CAD.State:=cbGrayed;

CAD.Hint:='Не установлено';

end;

end;

case RestrictAnonymous_Old of

1: begin

RestrictAnonymous.Checked:=True;

RestrictAnonymous.Hint:='Включено';

end;

0: begin

RestrictAnonymous.Checked:=False;

RestrictAnonymous.Hint:='Выключено';

end;

end;

case AutoShare_Old of

1: begin

AutoShare.Checked:=True;

AutoShare.Hint:='Включено';

end;

0: begin

AutoShare.Checked:=False;

AutoShare.Hint:='Выключено';

end;

end;

case ScreenSaver_Old of

1: begin

ScreenSaver.Checked:=True;

ScreenSaver.Hint:='Включено';

end;

0: begin

ScreenSaver.Checked:=False;

ScreenSaver.Hint:='Выключено';

end;

end;

case ScreenSaverPass_Old of

1: begin

ScreenSaverPass.Checked:=True;

ScreenSaverPass.Hint:='Включено';

end;

0: begin

ScreenSaverPass.Checked:=False;

ScreenSaverPass.Hint:='Выключено';

end;

end;

ScreenSaverTime.Value:=ScreenSaverTime_Old;

ScreenSaverTime.Hint:='Хранитель экрана включится через '+IntToStr(ScreenSaverTime.Tag)+' мин. неактивности компьютера';

MSSQLPort.Value:=MSSQLPort_Old;

MSSQLPort.Hint:='MS SQL Server принимает соединения на '+IntToStr(MSSQLPort.Value)+' порту';

case XP_CMDShell_Old of

1: begin

XP_CMDShell.Checked:=True;

XP_CMDShell.Hint:='Включено';

end;

0: begin

XP_CMDShell.Checked:=False;

XP_CMDShell.Hint:='Выключено';

end;

end;

AuditLevel.ItemIndex:=AuditLevel_Old;

end;

//процедура проверки необходимости применения параметров

procedure Tmain.CheckApply;

begin

if (CAD.Tag=CAD_Old) and (RestrictAnonymous.Tag=RestrictAnonymous_Old) and

(AutoShare.Tag=AutoShare_Old) and (ScreenSaver.Tag=ScreenSaver_Old) and

(ScreenSaverPass.Tag=ScreenSaverPass_Old) and (ScreenSaverTime.Tag=ScreenSaverTime_Old) and

(MSSQLPort.Tag=MSSQLPort_Old) and (XP_CMDShell.Tag=XP_CMDShell_Old) and

(AuditLevel.ItemIndex=AuditLevel_Old)

then Apply.Enabled:=False

else Apply.Enabled:=True;

end;

//процедура изменения настроек использования клавиш Ctrl+Alt+_Del при входе

//обрабатываются изменение настройки и соответствие рекомендуемым

procedure Tmain.CADClick(Sender: TObject);

begin

case CAD.State of

cbChecked: begin

CAD.Tag:=1;

CAD.Hint:='Включено'

end;

cbUnchecked: begin

CAD.Tag:=0;

CAD.Hint:='Выключено'

end;

cbGrayed: begin

CAD.Tag:=-1;

CAD.Hint:='Не установлено'

end;

end;

if CAD.Tag=CAD_Old then CAD.Font.Style:=[]

else CAD.Font.Style:=[fsBold];

CheckApply;

if CAD.Tag=CCAD then ImageList.GetIcon(0, CADImage.Picture.Icon)

else ImageList.GetIcon(1, CADImage.Picture.Icon);

end;

//процедура сохранения измененных настроек

procedure Tmain.ApplyClick(Sender: TObject);

begin

if CAD.Tag<>CAD_Old then SetCADSettings;

if RestrictAnonymous.Tag<>RestrictAnonymous_Old then SetRestrictAnonymousSettings;

if AutoShare.Tag<>AutoShare_Old then SetAutoShareSettings;

if (ScreenSaver.Tag<>ScreenSaver_Old) or (ScreenSaverPass.Tag<>ScreenSaverPass_Old) or

(ScreenSaverTime.Tag<>ScreenSaverTime_Old)

then SetScreenSaverSettings;

if MSSQLPort.Tag<>MSSQLPort_Old then SetMSSQLPortSettings;

if XP_CMDShell.Tag<>XP_CMDShell_Old then SetXP_CMDShellSettings;

if AuditLevel.ItemIndex<>AuditLevel_Old then SetAuditLevelSettings;

Apply.Enabled:=False;

RestrictAnonymous.Font.Style:=[];

AutoShare.Font.Style:=[];

ScreenSaver.Font.Style:=[];

ScreenSaverPass.Font.Style:=[];

ScreenSaverTime.Font.Style:=[];

Label1.Font.Style:=[];

Label2.Font.Style:=[];

MSSQLPort.Font.Style:=[];

Label6.Font.Style:=[];

XP_CMDShell.Font.Style:=[];

AuditLevel.Font.Style:=[];

Label7.Font.Style:=[];

end;

//процедура изменения настроек анонимного доступа к системе

//обрабатываются изменение настройки и соответствие рекомендуемым

procedure Tmain.RestrictAnonymousClick(Sender: TObject);

begin

case RestrictAnonymous.State of

cbChecked: begin

RestrictAnonymous.Tag:=1;

RestrictAnonymous.Hint:='Включено'

end;

cbUnchecked: begin

RestrictAnonymous.Tag:=0;

RestrictAnonymous.Hint:='Выключено'

end;

end;

if RestrictAnonymous.Tag=RestrictAnonymous_Old then RestrictAnonymous.Font.Style:=[]

else RestrictAnonymous.Font.Style:=[fsBold];

CheckApply;

if RestrictAnonymous.Tag=CRestrictAnonymous then ImageList.GetIcon(0, RestrictAnonymousImage.Picture.Icon)

else ImageList.GetIcon(1, RestrictAnonymousImage.Picture.Icon);

end;

//процедура изменения настроек ресурсов общего доступа (ADMIN$, C$ И т.д.)

//обрабатываются изменение настройки и соответствие рекомендуемым

procedure Tmain.AutoShareClick(Sender: TObject);

begin

case AutoShare.State of

cbChecked: begin

AutoShare.Tag:=1;

AutoShare.Hint:='Включено'

end;

cbUnchecked: begin

AutoShare.Tag:=0;

AutoShare.Hint:='Выключено'

end;

end;

if AutoShare.Tag=AutoShare_Old then AutoShare.Font.Style:=[]

else AutoShare.Font.Style:=[fsBold];

CheckApply;

if AutoShare.Tag=CAutoShare then ImageList.GetIcon(0, AutoShareImage.Picture.Icon)

else ImageList.GetIcon(1, AutoShareImage.Picture.Icon);

end;

//процедура изменения настроек хранителя экрана:активность

//обрабатываются изменение настройки и соответствие рекомендуемым

procedure Tmain.ScreenSaverClick(Sender: TObject);

begin

case ScreenSaver.State of

cbChecked: begin

ScreenSaver.Tag:=1;

ScreenSaver.Hint:='Включено';

ScreenSaverPass.Enabled:=True;

ScreenSaverTime.Enabled:=True;

Label1.Enabled:=True;

Label2.Enabled:=True;

end;

cbUnchecked: begin

ScreenSaver.Tag:=0;

ScreenSaver.Hint:='Выключено';

ScreenSaverPass.Enabled:=False;

ScreenSaverTime.Enabled:=False;

Label1.Enabled:=False;

Label2.Enabled:=False;

end;

end;

if ScreenSaver.Tag=ScreenSaver_Old then ScreenSaver.Font.Style:=[]

else ScreenSaver.Font.Style:=[fsBold];

CheckApply;

if ScreenSaver.Tag=CScreenSaver then ImageList.GetIcon(0, ScreenSaverImage.Picture.Icon)

else ImageList.GetIcon(1, ScreenSaverImage.Picture.Icon);

end;

//процедура изменения настроек хранителя экрана:защита паролем

//обрабатываются изменение настройки и соответствие рекомендуемым

procedure Tmain.ScreenSaverPassClick(Sender: TObject);

begin

case ScreenSaverPass.State of

cbChecked: begin

ScreenSaverPass.Tag:=1;

ScreenSaverPass.Hint:='Включено'

end;

cbUnchecked: begin

ScreenSaverPass.Tag:=0;

ScreenSaverPass.Hint:='Выключено'

end;

end;

if ScreenSaverPass.Tag=ScreenSaverPass_Old then ScreenSaverPass.Font.Style:=[]

else ScreenSaverPass.Font.Style:=[fsBold];

CheckApply;

if ScreenSaverPass.Tag=CScreenSaverPass then ImageList.GetIcon(0, ScreenSaverPassImage.Picture.Icon)

else ImageList.GetIcon(1, ScreenSaverPassImage.Picture.Icon);

end;

//процедура изменения настроек хранителя экрана:время неактивности

//обрабатываются изменение настройки и соответствие рекомендуемым

procedure Tmain.ScreenSaverTimeChange(Sender: TObject);

begin

if ScreenSaverTime.Text<>'' then begin

ScreenSaverTime.Tag:=ScreenSaverTime.Value;

ScreenSaverTime.Hint:='Хранитель экрана включится через '+IntToStr(ScreenSaverTime.Tag)+' мин. неактивности компьютера';

if ScreenSaverTime.Tag=ScreenSaverTime_Old then begin

ScreenSaverTime.Font.Style:=[];

Label1.Font.Style:=[];

Label2.Font.Style:=[];

end

else begin

ScreenSaverTime.Font.Style:=[fsBold];

Label1.Font.Style:=[fsBold];

Label2.Font.Style:=[fsBold];

end;

end else

ScreenSaverTime.Hint:='Хранитель экрана включится через ??? мин. неактивности компьютера';

CheckApply;

end;

//обработка пустого значения для времени неактивности

procedure Tmain.ScreenSaverTimeExit(Sender: TObject);

begin

if ScreenSaverTime.Text='' then ScreenSaverTime.Value:=1;

end;

//процедура запуска оснастки MMC "Security Options"

procedure Tmain.OpenSecurityOptionsClick(Sender: TObject);

var

handle:HWND;

begin

ShellExecute(handle, 'open', 'SecurityOptions.msc', nil, nil, SW_SHOWNORMAL);

end;

//процедура запуска оснастки MMC "User Rights Assignment"

procedure Tmain.OpenUserRightsClick(Sender: TObject);

var

handle:HWND;

begin

ShellExecute(handle, 'open', 'UserRights.msc', nil, nil, SW_SHOWNORMAL)

end;

//процедура изменения настроек слушающего порта MS SQL сервера

//обрабатываются изменение настройки и соответствие рекомендуемым

procedure Tmain.MSSQLPortChange(Sender: TObject);

begin

if MSSQLPort.Text<>'' then begin

MSSQLPort.Tag:=MSSQLPort.Value;

MSSQLPort.Hint:='MS SQL Server принимает соединения на '+IntToStr(MSSQLPort.Value)+' порту';

if MSSQLPort.Tag=MSSQLPort_Old then begin

MSSQLPort.Font.Style:=[];

Label6.Font.Style:=[];

end

else begin

MSSQLPort.Font.Style:=[fsBold];

Label6.Font.Style:=[fsBold];

end;

end else

MSSQLPort.Hint:='MS SQL Server принимает соединения на ??? порту';

CheckApply;

if (MSSQLPort.Enabled) then begin

if (MSSQLPort.Tag=CMSSQLPort) then ImageList.GetIcon(0, MSSQLPortImage.Picture.Icon)

else ImageList.GetIcon(1, MSSQLPortImage.Picture.Icon);

end;

end;

//процедура изменения настроек расширенной хранимой процедуры xp_cmdshell

//обрабатываются изменение настройки и соответствие рекомендуемым

procedure Tmain.XP_CMDShellClick(Sender: TObject);

begin

case XP_CMDShell.State of

cbChecked: begin

XP_CMDShell.Tag:=1;

XP_CMDShell.Hint:='Включено'

end;

cbUnchecked: begin

XP_CMDShell.Tag:=0;

XP_CMDShell.Hint:='Выключено'

end;

end;

if XP_CMDShell.Tag=XP_CMDShell_Old then XP_CMDShell.Font.Style:=[]

else XP_CMDShell.Font.Style:=[fsBold];

CheckApply;

if (XP_CMDShell.Enabled) then begin

if (XP_CMDShell.Tag=CXP_CMDShell) then ImageList.GetIcon(0, XP_CMDShellImage.Picture.Icon)

else ImageList.GetIcon(1, XP_CMDShellImage.Picture.Icon);

end;

end;

//процедура установки рекомендуемых настроек

procedure Tmain.RecommendClick(Sender: TObject);

begin

CAD.Checked:=CCAD=1;

CADClick(Sender);

RestrictAnonymous.Checked:=CRestrictAnonymous=1;

RestrictAnonymousClick(Sender);

AutoShare.Checked:=CAutoShare=1;

AutoShareClick(Sender);

ScreenSaver.Checked:=CScreenSaver=1;

ScreenSaverClick(Sender);

ScreenSaverPass.Checked:=CScreenSaverPass=1;

ScreenSaverPassClick(Sender);

if MSSQLPort.Enabled then begin

MSSQLPort.Value:=CMSSQLPort;

MSSQLPortChange(Sender);

end;

if XP_CMDShell.Enabled then begin

XP_CMDShell.Checked:=CXP_CMDShell=1;

XP_CMDShellClick(Sender);

end;

if AuditLevel.Enabled then begin

AuditLevel.ItemIndex:=CAuditLevel;

AuditLevelChange(Sender);

end;

Apply.SetFocus;

end;

//процедура изменения настроек уровня аудита MS SQL сервера

//обрабатываются изменение настройки и соответствие рекомендуемым

procedure Tmain.AuditLevelChange(Sender: TObject);

begin

if AuditLevel.ItemIndex=AuditLevel_Old then begin

AuditLevel.Font.Style:=[];

Label7.Font.Style:=[];

end

else begin

AuditLevel.Font.Style:=[fsBold];

Label7.Font.Style:=[fsBold];

end;

CheckApply;

if (AuditLevel.Enabled) then begin

if (AuditLevel.ItemIndex=CAuditLevel) then ImageList.GetIcon(0, AuditLevelImage.Picture.Icon)

else ImageList.GetIcon(1, AuditLevelImage.Picture.Icon);

end;

end;

//процедура запуска диалога настроек безопасности для директории %systemroot%/system32

procedure Tmain.OpenSecuritySettingsSystem32Click(Sender: TObject);

begin

JvObjectPropertiesDialog.Execute;

end;

end.