Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.10;
Скачать: CL | DM;

Вниз

Запрет на удаление процесса по средвам ACL   Найти похожие ветки 

 
Belaev Andrey ©   (2004-09-01 21:46) [0]

Как запретить удалить процесс из деспетчера задачь WinXP по средствам ACL (Access Control List)? Мне нужен конкретный прмер : виде его где - то в нете пол года назад, а щас ищу его - и нету ... :(


 
clickmaker ©   (2004-09-02 10:35) [1]

SetKernelObjectSecurity()


 
Belaev Andrey ©   (2004-09-02 11:19) [2]

А что писать в параметре Handle? hInstance процесса не подходит!


 
clickmaker ©   (2004-09-02 11:26) [3]


> [2] Belaev Andrey ©   (02.09.04 11:19)

хэндл процесса. Полученый из OpenProcess или CreateProcess


 
Belaev Andrey ©   (2004-09-02 11:35) [4]

Делаю так :

Procedure SetProcessSelfSecurity;
Var
 SecDescriptor : PSecurityDescriptor;
 SecACL : ACL;
 hProcess : Cardinal;
begin
 GetMem(SecDescriptor, SizeOf(TSecurityDescriptor));
 InitializeSecurityDescriptor(SecDescriptor, SECURITY_DESCRIPTOR_REVISION);
 InitializeACL(SecACL, SizeOf(SecACL), 2);
 SetSecurityDescriptorDACL(SecDescriptor, True, @SecACL, False);
 hProcess := OpenProcess(PROCESS_ALL_ACCESS, False, hInstance);
 SetKernelObjectSecurity(hProcess, DACL_SECURITY_INFORMATION, SecDescriptor);
end;

SetKernelObjectSecurity выдаёт False!


 
clickmaker ©   (2004-09-02 11:53) [5]

а что выдает SysErrorMessage(GetLastError) ?


 
clickmaker ©   (2004-09-02 11:55) [6]

и с размером Acl не все так просто. Глянь в MSDN InitializeAcl, там есть алгоритм расчета


 
Belaev Andrey ©   (2004-09-02 12:18) [7]

SysErrorMessage(GetLastError) ничего не выдаёт! Почему - то даже окошко не вылазиет. С размером ACL - поставил на 4096 - это есть в демке, но вот результат почему - то нулевой.


 
clickmaker ©   (2004-09-02 12:26) [8]


> [7] Belaev Andrey ©   (02.09.04 12:18)
> SysErrorMessage(GetLastError) ничего не выдаёт! Почему -
> то даже окошко не вылазиет

SysErrorMessage не создает окошко.
Если хочешь окошко, то
Win32Check(SetKernelObjectSecurity())
или
ShowMessage(SysErrorMessage(GetLastError))


 
Belaev Andrey ©   (2004-09-02 12:29) [9]

W32Check выдаёт "неверный дескриптор".


 
clickmaker ©   (2004-09-02 12:44) [10]

GetMem(SecDescriptor, SECURITY_DESCRIPTOR_MIN_LENGTH);


 
Belaev Andrey ©   (2004-09-02 12:53) [11]

Вроде разобрался. Если в место hInstance в OpenProcess ставить PID некоторых процесов, то функция выполняется успешно. А как достать собственный PID?


 
clickmaker ©   (2004-09-02 13:06) [12]


>  [11] Belaev Andrey ©   (02.09.04 12:53)
> Вроде разобрался. Если в место hInstance в OpenProcess ставить
> PID некоторых процесов, то функция выполняется успешно.
> А как достать собственный PID?

Для собственного тебе OPenProcess делать не нужно. Просто подсунь в SetKernelObjectSecurity GetCurrentProcess


 
Belaev Andrey ©   (2004-09-02 16:55) [13]

Спасибо! Большое - большое сасибо clickmaker! Очень тебе благодарен за помощ!



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

Текущий архив: 2004.10.10;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.061 c
14-1095499311
VID
2004-09-18 13:21
2004.10.10
Как берут на работу в салон сотовой связи "Связной" (Москва)


1-1095270763
Gear
2004-09-15 21:52
2004.10.10
Как реализовать прилипание Form к краям десктопа (как у ICQ)?


1-1095762449
Zilog
2004-09-21 14:27
2004.10.10
Ломанные линии. Запись на диск...


4-1094046359
Dec
2004-09-01 17:45
2004.10.10
Создать окно, содержащее CheckBox c использованием API


14-1095926430
DiamondShark
2004-09-23 12:00
2004.10.10
Деловая игра "Инквизиция"