Нужно создать пароль на выход из программы, при этом исключив возможность "убить" процесс из диспетчера задач.
Если можете, без умных слов, пожалуйста.. Просто накидайте код.. Спасибо за помощь.
Другие языки программирования и технологии
Блокировка возможности выхода из приложения Delphi
Как ты собираешься скрыть свой процесс в диспетчере? Это, мягко говоря, невозможно. НО, есть другой способ. Сейчас расскажу.
Можно отключить диспетчер задач на время работы твоей программы. Для этого, нужно в реестре редактировать ключ DisableTaskMgr в ветке \Software\Microsoft\Windows\CurrentVersion\Policies\System
А конкретно это можно сделать вот так:
uses Registry; // незабываем подключить этот модуль..!!
procedure LockerTask(lock_id: integer);
const
sKey = 'DisableTaskMgr';
var
Reg : TRegistry;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CURRENT_USER;
if Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Policies\System', True) then
begin
if Reg.ValueExists(sKey) then
begin
case lock_id of
1: Reg.WriteString (sKey, '1'); // отключить диспетчер
100: Reg.WriteString (sKey, '100'); // включить диспетчер
end;
end;
Reg.CloseKey;
end;
finally
Reg.Free;
end;
end;
Эта функция работает следующим образом: если на вход, в качестве параметра она получает "1" - диспетчер задач отключается. Если на вход получает "100" - диспетчер задач включается. При запуске приложения в событии FormLoad ты должен вызывать эту функцию с параметром "1", а когда юзер введет правильный пароль - вызываете функцию с параметром "100"
Метки в CaseOf можно поменять на "0" и "1" для удобства.
Вот еще вариант такого кода:
uses Registry;
...
procedure LockTaskManager(Lock : Boolean = True);
const
sKey = 'DisableTaskMgr';
begin
with TRegistry.Create do
begin
RootKey := HKEY_CURRENT_USER;
if not OpenKey('\Software\Microsoft\Windows\CurrentVersion\Policies\System', True) then Exit;
if Lock then WriteString(sKey, '1') else WriteString(sKey, '100');
CloseKey;
Free;
end;
end;
...
procedure TForm1.Button1Click(Sender: TObject);
begin
LockTaskManager();
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
LockTaskManager(False);
end;
__www.delphisources.ru/forum/showthread.php?t=10617
Можно отключить диспетчер задач на время работы твоей программы. Для этого, нужно в реестре редактировать ключ DisableTaskMgr в ветке \Software\Microsoft\Windows\CurrentVersion\Policies\System
А конкретно это можно сделать вот так:
uses Registry; // незабываем подключить этот модуль..!!
procedure LockerTask(lock_id: integer);
const
sKey = 'DisableTaskMgr';
var
Reg : TRegistry;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CURRENT_USER;
if Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Policies\System', True) then
begin
if Reg.ValueExists(sKey) then
begin
case lock_id of
1: Reg.WriteString (sKey, '1'); // отключить диспетчер
100: Reg.WriteString (sKey, '100'); // включить диспетчер
end;
end;
Reg.CloseKey;
end;
finally
Reg.Free;
end;
end;
Эта функция работает следующим образом: если на вход, в качестве параметра она получает "1" - диспетчер задач отключается. Если на вход получает "100" - диспетчер задач включается. При запуске приложения в событии FormLoad ты должен вызывать эту функцию с параметром "1", а когда юзер введет правильный пароль - вызываете функцию с параметром "100"
Метки в CaseOf можно поменять на "0" и "1" для удобства.
Вот еще вариант такого кода:
uses Registry;
...
procedure LockTaskManager(Lock : Boolean = True);
const
sKey = 'DisableTaskMgr';
begin
with TRegistry.Create do
begin
RootKey := HKEY_CURRENT_USER;
if not OpenKey('\Software\Microsoft\Windows\CurrentVersion\Policies\System', True) then Exit;
if Lock then WriteString(sKey, '1') else WriteString(sKey, '100');
CloseKey;
Free;
end;
end;
...
procedure TForm1.Button1Click(Sender: TObject);
begin
LockTaskManager();
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
LockTaskManager(False);
end;
__www.delphisources.ru/forum/showthread.php?t=10617
╬═Ђǿřǯ¥Î═╬
мне кажется, у нас проблемы.. программа будет запускаться не под учеткой админа.. это не помешает?
Что может помешать убить нормальное приложение из диспетчера задач? НИЧЕГО. Значит вешайте некий сервис, который будет при закрытии вашего приложения стартовать его заново.
Похожие вопросы
- Выдаёт ошибку. Ошибка при запуске приложения (0xc0000005). Для выхода из приложения нажмите кнопку ОК
- [Delphi] консольное приложение, UDP
- Какие приложения можно создать на Delphi? Я начал изучать Delphi, что можно создать и взять это как стремление
- Delphi взаимодействие между приложениями
- Согласны с этим - Глубинные причины ненависти к Delphi/Pascal ?
- Скачал и установил Borlanand Delphi 6. Не могу найти на него русификатор, помогите у кого есть возможность! Заранее благ
- Delphi:Прочитал, что если при динамическом создании компонента если указать Name объекта, то в последующем можно ->
- Пожалуйста помогите! Что и куда вводить в программе Delphi для создания следующего приложения(см ниже)
- На чём лучше писать приложения, на C++ или Delphi(на языке, а не на среде разработки)
- Не понимаю, почему в последних версиях Delphi (XE5, XE6, XE7) есть поддержка приложений Android?