Вниз
Скачать: CL | DM;

Защита программы от закрытия в WinNT/2000/XP   Найти похожие ветки 

← →
DVM   (2002-11-01 09:37) [0]

Пожалуйста подскажите наиболее надежный способ защитить свою программу от закрытия в WinNT/2000/XP. (с примером кода) Ну хотя бы по примеру Explorera который при закрытии открывается сам опять. Кстати, кто-нибудь знает, он сам себя запускает или его наличие в памяти контролирует другая программа и какая?
Скрывание диалога CTRL+ALT+DEL ключом в реестре не предлагать.

Заранее спасибо за помощь.


← →
Opuhshii ©   (2002-11-01 09:49) [1]

защитить свою программу от закрытия... - недавать права пользователю на закрытие твоей программы....


← →
DVM   (2002-11-01 09:55) [2]

Нет, надо сделать так, чтобы ее не мог закрыть даже администратор (чтобы закрыть можно было бы, например, кнопкой в самой программе, но не другим способом). Я видел таких программ много. Но как сделать?


← →
Song ©   (2002-11-01 11:06) [3]

Любой процесс можно закрыть, имея привиллегию DEBUG. Если её нет, тогда можно защитить процесс, дав ему системную привелегию. Такой способ есть, но распространять его не хочется ввиду большого количества вирусописателей.


← →
DVM   (2002-11-01 11:24) [4]

Я не вирусописатель и не троянописатель. Просто нужно создать прогу которую раз запустив, невозможно потом было снять. Прога предназначена для учебного заведения. Она закрывает собой весь экран и человек не может с нее переключится, но получается что в NT он может снять ее через CTRL-ALT-DEL. Для простоты положим, что человек не администратор. Как (код) запретить ему снять задачу. Хотелось бы также вариант для пользователя администратор, так как иногда надо юзеру находится в системе под администратором, но в этой проге.


← →
Song ©   (2002-11-01 11:41) [5]

Ссыла на пример задания привелегии SYSTEM была. Поищите.
Есть ещё способ очень несложный. Намыльте мне, отпишу.


← →
Qpwoe! ©   (2002-11-02 06:50) [6]

systemparametsinfo(.......,nil);

procedure onclosequery(...);
begin
canclose:=false;
end;


← →
alexta   (2002-11-02 15:52) [7]

От администратора так просто не отвязаться, он сможет отрубить любой процесс. Но есть один простой прикол для обхода. Создаеш два процесса и каждий следит за другим. Как только одного убивают, второй загружает его снова. Так твои процессы будут жить долго. Ну и естественно они должны моноторить запущеное приложение.


← →
AngeL B.   (2002-11-02 17:00) [8]


> Создаеш два процесса и каждий следит за другим.

:)
suspend(prog1);
suspend(prog2);
kill(prog1);
kill(prog2);


← →
ZZ ©   (2002-11-02 17:08) [9]

Да и вот так на 99% сработает :))
kill(prog1);
kill(prog2);


← →
alexta   (2002-11-03 00:01) [10]

2 AngeL B.
Родной мой! Програмными методами и батниками убъеш кого хочеш. Имеется в виду, что юзер лопух и будет пользоваться TaskManager. Причем не забывай, что процессы которые ты запустил известны тебе, а не пользователю.
Полностью отключить убиение программы в NT нельзя. Поэтому нужно опираться на человеческий фактор.


← →
AngeL B.   (2002-11-03 11:44) [11]


> 2 alexta

Я что-то плохо понимаю о каком человеческом факторе в данном случае идет речь, если


> надо сделать так, чтобы ее не мог закрыть даже администратор


Ну, только если админ полный даун.
Но в этом случае называем процесс win32srv.exe, даем системную привилегию и все. :)
А вообще говоря, можно при создании процесса установить соответствующий дескриптор безопасности и отобрать у всех права на процесс.


← →
Gennadiy ©   (2002-11-04 10:44) [12]

Могу подсказать такой вариант, где программа запрещает нажатие клавиш CTRL+ALT+DEL:


procedure TForm1.Button1Click(Sender: TObject);
var old: boolean;
begin
old:=True;
SystemParametersInfo(SPI_SCREENSAVERRUNNING,1,@old,0);
end;
А данный код обратно разрешает нажатие этих клавиш:

procedure TForm1.Button8Click(Sender: TObject);
var old:boolean;
begin
old:=True;
SystemParametersInfo(SPI_SCREENSAVERRUNNING,0,@old,0);
end;


← →
DVM   (2002-11-04 10:44) [13]

Естественно юзер, сидящий за компьютером не будет писать проги убивающие процессы. Надо лишь, чтобы программу нельзя было убить Task Manager-ом, не выключая его.
В Win9X все скрыть легко (RegisterServiceProcess)
Как скрыть в NT (ну или не скрыть а запретить убить) программно, без дополнительных манипуляций с политиками и пр.

Т. е. надо так: запустил юзеру программу и все - снять ее он больше не может.
Если можно пример кода.


← →
Koster   (2002-11-05 09:53) [14]

На Хакере был пример как убрать свой процесс из списка процессов именно в 2k-шном Task Manager. Довольно криво сделано, но работает. Называлось что-то вроде "сокрытие процессов в windows 2000"


← →
Song ©   (2002-11-05 10:49) [15]

Да, исходник был на Си. Что-то вот уже долго его никто не может переделать.


← →
Mr.MaLoY   (2002-11-05 14:10) [16]

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose := False;
end;


← →
DVM   (2002-11-14 13:10) [17]

Для Mr.MaLoY:
Так можно запретить снять приложение, но не процесс.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.49 MB
Время: 0.011 c
9-86604
Shadof
2002-07-24 12:51
2003.01.27
Создание интерфейса


14-87113
Dimka Maslov
2003-01-08 17:59
2003.01.27
Неправильные глаголы русского языка


1-86771
SSS
2003-01-17 18:17
2003.01.27
Raznije Windows


14-87083
race1
2003-01-08 11:35
2003.01.27
форма


1-86749
CAMOBAP
2003-01-17 14:45
2003.01.27
Как получить дату последнего обновления файла?




   Наверх