Создайте новый проект Delphi. Присвойте свойству Caption формы значение Настройка ОС Windows. Разместите на форме компонент GroupBox категории Standard и присвойте его свойству Caption значение Опции. На компоненте GroupBox разместите один над другим три компонента CheckBox категории Standard и присвойте их свойству Caption следующие значения: Отключить автозагрузку с CD-ROM, Отключить свойства экрана И Заблокировать реестр. У нижнего края формы разместите кнопку (компонент Button категории Standard), присвоив ее свойству Caption значение Выполнить.
Полученная форма должна соответствовать рис. 12.1.
Рис. 12.1. Форма программы настройки Windows
Разработка программного кода
В программе потребуется обработать два события: создание формы и нажатие кнопки Выполнить. При создании формы мы должны считывать значения из реестра, и устанавливать соответствующие флажки. При нажатии кнопки Выполнить будут применяться выбранные пользователем настройки.
Для начала добавим в раздел uses ссылку на модуль Registry для работы с системным реестром. Также необходимо объявить глобальную переменную reg типа TRegistry, с помощью которой мы будем работать с реестром:
var
Form1: TForm1;
reg: TRegistry;
Обработчик события создания главной формы OnCreate:
procedure TForm1.FormCreate(Sender: TObject);
begin
reg:= TRegistry.Create;//открываем реестр
//настройки для текущего пользователя
reg.RootKey:= HKEY_CURRENT_USER;
reg.OpenKey('SYSTEM\CurrentControlSet\Services\Cdrom', False); //открываем раздел
if reg.ValueExists('Autorun') then //если ключ существует
if reg.readinteger('autorun') = 1 //и если он равен 1,
then //то устанавливаем флажок первой опции
CheckBox1.Checked:= True;
reg.CloseKey;//закрываем реестр
//Таким же образом проверяем остальные опции
//Для опции "Отключить свойства экрана":
reg:= TRegistry.Create;
reg.RootKey:= HKEY_CURRENT_USER;
reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\' +
'Policies\System', False);
if reg.ValueExists('NoDispCPL') then
if reg.ReadInteger('NoDispCPL') = 1 then CheckBox2.Checked:= True;
reg.CloseKey;
//для опции "Заблокировать реестр":
reg:= TRegistry.Create;
reg.RootKey:= HKEY_CURRENT_USER;
reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\' +
'Policies\System', False);
if reg.ValueExists('DisableRegistryTools') then
if reg.ReadInteger('DisableRegistryTools') = 1 then CheckBox3.Checked:= True;
reg.CloseKey;
end;
При создании формы мы проверяем, какие из опций уже установлены. Если опция уже установлена, то устанавливаем соответствующий флажок.
Обработчик события OnClick для кнопки Выполнить:
procedure TForm1.Button1Click(Sender: TObject);
begin
if CheckBox1.Checked then
begin //если установлен флажок напротив первой опции
reg:= TRegistry.Create; //открываем реестр
//открываем ветку реестра
reg.RootKey:= HKEY_LOCAL_MACHINE;
reg.OpenKey('SYSTEM\CurrentControlSet\Services\Cdrom', True); //открываем требуемый раздел в реестре
//записываем соответствующий ключ
reg.WriteInteger('Autorun', 1);
reg.CloseKey;
end else begin //иначе…
reg:= TRegistry.Create;
reg.RootKey:= HKEY_LOCAL_MACHINE;
reg.OpenKey('SYSTEM\CurrentControlSet\Services\Cdrom', True);
//…отключаем эту возможность
reg.WriteInteger('Autorun', 0);
reg.CloseKey;
end;