![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Незавершаемый процесс [D4, D5, D6, D7, NT4, Win2k, WinXP]
kosha80 © (2003-02-01 14:33:00)Может кто и знает, как сделать процесс незавершаемым. Точнее что бы только системма могла его закрыть. Я понимаю надо провести какую то работу с правами... или еще что.
Вот в "Диспечере задач" некоторые процессы не завершаются и выводится сообщение "Отказано в доступе" хочу добиться похожего.
Зараннее спасибо.
Игорь Шевченко (2003-02-06 10:41:00) [1]Unable to determine IP address from host name for www.delphi.xonix.ru
MARcoDEN (2003-02-06 10:17:00) [2]http://www.delphi.xonix.ru/article/?id=untermproc2
ZZ (2003-02-06 01:29:00) [3]Оно вообще не от чего не спасет (кроме дисп.задач)
Cosmic (2003-02-05 19:48:00) [4]winlogon, services... В смысле, файлы нужно так называть. Вот только от debug это ну никак не спасает.
Игорь Шевченко (2003-02-05 18:07:00) [5]ZZ © (05.02.03 17:16)
> On Windows NT/2K, Process Explorer requires that your account
> have the "load driver" and "debug" privileges.
Он через драйвер работает. Этот драйвер в ресурсах сидит и объекты показывает.
ZZ (2003-02-05 17:57:00) [6]В общем 3ий раз переписывать ответ нет настроения (а первые 2 не отослались :(
Заменяем GetCurrentProcess на OpenProcess(PROCESS_ALL_ACCESS,false,GetCurrentProcessID);
ZZ (2003-02-05 17:55:00) [7]sorry test
gsu (2003-02-05 17:43:00) [8]>> Прекрасно снимается :-)
фоту пришлите (-:|~
Игорь Шевченко (2003-02-05 17:25:00) [9]
> Снимается он там где список процессов
Прекрасно снимается :-)
Только что попробовал. D5, NT4, SP6
ZZ (2003-02-05 17:16:00) [10]Игорь Шевченко ©
Process Explorer
On Windows NT/2K, Process Explorer requiresthat your account have the "load driver" and "debug" privileges.
интересно зачем?
ЗЫ. Пробовать не буду, т.к. результат известен - убъет... причем убъет все - и сервис и прогу и (вероятно) winlogon.
aleksey_sv (2003-02-05 17:16:00) [11]
> ZZ
Совершенно другое дело, теперь я знаю что с делфи у меня всё в порядке :)
ZZ (2003-02-05 17:07:00) [12]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,AclApi, Accctrl;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
const
ACL_REVISION = 2;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var ACL : _ACL;
begin
if (InitializeAcl(ACL,SizeOf(_ACL),ACL_REVISION)) and (IsValidAcl(ACL))
then SetSecurityInfo(GetCurrentProcess,SE_KERNEL_OBJECT,DACL_SECURITY_INFORMATION,nil,nil,@ACL,nil);
end;
end.
PS. (НЕ) Снимается он там где список процессов, а не приложений (окон)!
aleksey_sv (2003-02-05 16:57:00) [13]
> ZZ
У меня тоже Delphi 7 (Enterprise) и не работает, может чтобы небыло таких вопросов вы могли б привести ПОЛНЫЙ РАБОЧИЙ КОД этой проги, а не (по памяти), если у меня она заработает значит ОК если нет значит у меня партачный делфи.
Извините если что не так.
Игорь Шевченко (2003-02-05 16:46:00) [14]ZZ © (05.02.03 16:42)
А Process Explorer тоже не снимает ?
ZZ (2003-02-05 16:42:00) [15]под Delphi 7 (Enterprise) усе работает
ers (2003-02-05 16:02:00) [16]Вот-вот у меня на седьмой тоже свистело при закрытиии;) А вот в шестой откомпилил всё ОК!!!!
aleksey_sv (2003-02-05 15:44:00) [17]Странно, проделал все действия, но у меня под win2000 завершает со свистом :).
Писал на делфи 7 (Если это важно)
или у меня Диспечер задач корявый ;)
ZZ (2003-02-05 14:52:00) [18]const ACL_REVISION = 2; //по памяти :))
PS. Это работает в ЛЮБОЙ версии Дельфи (:балшой smile: ), но в Win до XP!!! (В XP этот код дает полный доступ к процессу для всех)
Бобко Сергей (2003-02-05 13:47:00) [19]А если конкретней то вы и получаете в Диспетчере задач "ОТКАЗАНО В ДОСТУПЕ"
Бобко Сергей (2003-02-05 13:46:00) [20]А вы не пробовали в uses дописать AclApi, Accctrl
Кричите не по делу ... Вопрос был как сделать процесс который нельзя было бы убить с пощью Диспетчера задач. Получите код:
uses ..., AclApi, Accctrl;
procedure TMainForm.FormCreate(Sender: TObject);
var ACL : _ACL;
begin
if (InitializeAcl(ACL,SizeOf(_ACL),ACL_REVISION)) and (IsValidAcl(ACL))
then SetSecurityInfo(GetCurrentProcess,SE_KERNEL_OBJECT,DACL_SECURITY_INFORMATION,nil,nil,@ACL,nil);
end;