Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.03.2010, 12:18   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
Вопрос Проблемка с блокировкой TaskMgr

Использую код с DelphiWorld для блокировки Диспетчера задач. Вот исходный код:
Код:
procedure DisableTaskMgr(Disable: Boolean);
var
  reg: TRegistry;
begin
  reg := TRegistry.Create;
  reg.RootKey := HKEY_CURRENT_USER;
  reg.OpenKey('Software', True);
  reg.OpenKey('Microsoft', True);
  reg.OpenKey('Windows', True);
  reg.OpenKey('CurrentVersion', True);
  reg.OpenKey('Policies', True);
  reg.OpenKey('System', True);
  if Disable then
    reg.WriteString('DisableTaskMgr', '1') //блокиреум
  else
    reg.WriteString('DisableTaskMgr', '0'); //разблокируем
  reg.CloseKey;
end;
Я переделал его немного под свои нужды:
Код:
procedure DisableTaskMgr(Disable: Boolean);
var
  reg: TRegistry;
begin
  reg := TRegistry.Create;
  reg.RootKey := HKEY_CURRENT_USER;
  reg.OpenKey('Software', True);
  reg.OpenKey('Microsoft', True);
  reg.OpenKey('Windows', True);
  reg.OpenKey('CurrentVersion', True);
  reg.OpenKey('Policies', True);
  reg.OpenKey('System', True);
end;
И на форме у меня два RadioButton-a: блокировать(RadioButton1) и разблокировать(RadioButton2). В первом RadioButton1 написал следующее:
Код:
procedure TForm1.RadioButton1Click(Sender: TObject);
var
 reg: TRegistry;
 Disable: Boolean;
begin
 if Disable then
 begin
  if Form1.RadioButton1.Checked = True then
   begin
    reg.WriteString('DisableTaskMgr','1');
   end;
 end;
end;
Но проблема вот в чем. Когда я запускаю программу и нажимаю на этот RadioButton1, то у меня появляется ошибка: "Failed to set data for 'DisableTaskMgr' ". Полагаю, что ошибка означает, что не удается установить данный параметр. Может это потому что у меня вместо стандартного Диспетчера задач стоит AnVir Task, который заменил мне стандартный? Пробовал в самом реестре найти по пути, который в коде, этот параметр, но не нашел.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 04.03.2010, 12:28   #2
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

А почему бы не так :
Код:
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
  if Form1.RadioButton1.Checked then
   begin
    DisableTaskMgr(true);
   end;
end;
В твоей процедуре Disable всегда будет false, т.к. она внутренняя переменная процедуры RadioButton1Click и при каждом входе в процедуру она будет инициироваться в false. Это раз.
Второе, в своем коде перед
Код:
reg.WriteString('DisableTaskMgr','1');
добавь :
Код:
  reg := TRegistry.Create;
  reg.RootKey := HKEY_CURRENT_USER;
  reg.OpenKey('Software', True);
  reg.OpenKey('Microsoft', True);
  reg.OpenKey('Windows', True);
  reg.OpenKey('CurrentVersion', True);
  reg.OpenKey('Policies', True);
  reg.OpenKey('System', True);
ведь перед тем как записать в реестр нужно ведь указать полностью куда писать нужно.
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемка Lacrimoso Общие вопросы C/C++ 11 24.09.2009 23:14
заблокировать TaskMgr в Windows Vista\7 (рееестр) Vol666 Общие вопросы Delphi 6 21.08.2009 13:57
проблемка lucky Паскаль, Turbo Pascal, PascalABC.NET 1 12.05.2009 22:32
проблемка( Alexcomeback Общие вопросы C/C++ 4 16.04.2009 18:38