Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 1 марта!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

БОЛЬШОЙ FAQ ПО DELPHI



отключить команду "выключить компьютер"

Как вы думаете, что сделает глупый пользователь, если вдруг не обнаружит у себя в меню "ПУСК" команду "Выключить компьютер"... Правильно - сразу сожрёт от испуга свою мышь и побежит хвастаться друзьям, что его хакнул сам Билл Гейтс!!! Так не будем же его огорчать и дадим ему такой шанс.

В системном реестре есть специальный ключ, отвечающий за доступность этой команды. Вот он:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer

В этом ключе нужно только создать параметр с именем "NoClose" и задать ему в качестве значения единицу.

Как же это можно сделать из Delphi?



Сначала в области uses нужно объявить модуль Registry. Вот так:

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Registry,
StdCtrls;


Затем, например, по нажатию какой-нибудь кнопки написать следующий код:

procedure TForm1.Button1Click(Sender: TObject);
var
a:TRegistry;
begin
a:=TRegistry.create;
a.RootKey:=HKEY_CURRENT_USER;
a.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer',true);
a.WriteInteger('NoClose',1);
a.CloseKey;
a.Free;
end;




Как это сделано?

Сначала мы объявляем переменную класса TRegistry:

var
a:TRegistry;


Выделяем под неё память:

a:=TRegistry.create;

Указываем с каким из основных ключей мы хотим иметь дело, используя свойство RootKey [ключи описывались в статье "О реестре"]:

a.RootKey:=HKEY_CURRENT_USER;

Открываем нужный ключ. Фунции OpenKey нужно указать два параметра: сначала какой ключ мы открываем, а затем логическое значение, обозначающее: будет ли ключ создан в случае его отсутствия:

a.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer',true);

Вносим целочисленное значение в параметр "NoClose", то что значение вносится целочисленное мы показали, используя функцию WriteInteger. Чтобы задействовать этот параметр нужно в качестве значения задать единицу (ноль снимает использование).

a.WriteInteger('NoClose',1);

После того как мы сделали своё грязное дело :-)) нужно закрыть ключ:

a.CloseKey;

...и освободить память: a.Free;





<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS