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

Вниз

InitializeAcl SECURITY_ATTRIBUTES крутые вопросы   Найти похожие ветки 

 
Georgiy   (2006-03-22 23:35) [0]

Код ниже.
Цель - делаю SECURITY_ATTRIBUTES  для Всех доступ.

Выдает ошибку InitializeAcl - неправельно задан параметр,

Когда то работало после пляски с перебором,так как визуально все вроде правильно
доходило до того что ставил @pNewACL^ так как руки опускались, и спрашивается зачем мутили
(PSECURITY_DESCRIPTOR,TSECURITY_DESCRIPTOR,_SECURITY_DESCRIPTOR) смотришь одно (MSDN) ,а пишется другое ???

sd:PSECURITY_DESCRIPTOR
sd:_SECURITY_DESCRIPTOR

pNewACL:PACL;
pNewACL:_ACL; значений


var global
SA : _SECURITY_ATTRIBUTES;

procedure ALL;

var
sd:PSECURITY_DESCRIPTOR; // pointer äëÿ Alloc
s:pointer;
psidEver:PSID;
pNewACL:PACL;

FLAG:cardinal;
begin
TRY
if AllocateAndInitializeSid(SECURITY_WORLD_SID,1,SECURITY_WORLD_RID,0,0,0,0,0,0,0,p sidEver)=  

false then showmessage("no a");;
if  IsValidSid(psidEver)= false then showmessage("IsValidSid");

{ну выделил места до п0пы хватит}
pNewACL := PACL(LocalAlloc(LPTR,1024*8));

if not InitializeAcl(pNewACL^,1024*8,{ACL_REVISION}1) then  showmessage("Error: " + SysErrorMessage(GetLastError) + " :InitializeAcl"); // тут ошибка мол неверный параметр
               // AddAccessAllowedAce( _ACL
{непонятки требует _ACE а есть PACE,бросаем VOID чтоб подавился}
if AddAccessAllowedAce(pNewACL^, ACL_REVISION ,
STANDARD_RIGHTS_READ ,psidEver) then showmessage("AddAccessAllowedAceEx  "+

SysErrorMessage(GetLastError));

if not IsValidAcl(pNewACL^) then   showmessage("Error: IsValidAcl");

sd := pSECURITY_DESCRIPTOR(LocalAlloc(LPTR, SECURITY_DESCRIPTOR_MIN_LENGTH));
if not Assigned(@SD) then showmessage("Error: PSECURITY_DESCRIPTOR(LocalAlloc");

if not InitializeSecurityDescriptor(sd,SECURITY_DESCRIPTOR_REVISION) then  showmessage("Error:

InitializeSecurityDescriptor");
if not SetSecurityDescriptorDacl   (sd,TRUE,@pNewACL,false) then  showmessage("Error:

SetSecurityDescriptorDacl ");

ZeroMemory(@sa,SizeOf(sa));
sa.nLength:=sizeof(sa);
sa.bInheritHandle:=false;
sa.lpSecurityDescriptor:=sd;
if IsValidSecurityDescriptor(sd)=false then showmessage("IsValidSecurityDescriptor");
EXCEPT
showmessage("critiacal");
END;
end;
//------------------


 
Leonid Troyanovsky ©   (2006-03-23 09:11) [1]


> Georgiy   (22.03.06 23:35)  

> Цель - делаю SECURITY_ATTRIBUTES  для Всех доступ.

 Попробуй так

procedure SetNullDacl(Handle: THandle);
const
 SECURITY_DESCRIPTOR_REVISION = 1;
var
 sd: TSecurityDescriptor;
begin
 Win32Check(InitializeSecurityDescriptor( @sd,
                                          SECURITY_DESCRIPTOR_REVISION));
 Win32Check(SetSecurityDescriptorDACL(@sd, True, nil, False));
 Win32Check(SetKernelObjectSecurity( Handle,
                                     DACL_SECURITY_INFORMATION,
                                     @sd));
end;

--
Regards, LVT.


 
Georgiy   (2006-03-23 13:34) [2]

>не подойдет ,так как (@sd, True, nil, False));
мне надо не нулевой,а пустой ,чтоб добавить ACL

Уже добился без ошибок работает,получаю SA : _SECURITY_ATTRIBUTES;
Но при попытке использовать

if CreateEvent(@sa,true,false,"WWWWWTESTWWWWWWWWW")=0 then BEGIN
//str(GetLastError,s);
//showmessage(S);
showmessage("test  "+ SysErrorMessage(GetLastError) );


выдает ошибку 1305 тоесть Уровень редакции неизвесен
(Версия изменений неизвестна)

кого sid , acl ?


 
Leonid Troyanovsky ©   (2006-03-23 14:50) [3]


> Georgiy   (23.03.06 13:34) [2]
> >не подойдет ,так как (@sd, True, nil, False));
> мне надо не нулевой,а пустой ,чтоб добавить ACL


А зачем что-то добавлять, если нужно открыть для всех?

{TSecurityDescriptor}
 if not InitializeSecurityDescriptor(@sd, 1) or
    not SetSecurityDescriptorDACL(@sd, true, PAcl(nil), False) then
       raise Exception.Create("MailSlot security failed");

 {TSecurityAttributes}
 sa.nLength:=SizeOf(sa);
 sa.lpSecurityDescriptor:=@sd;
 sa.bInheritHandle:= False;

И этот sa использовать в CreateEvent.

--
Regards, LVT.


 
Georgiy   (2006-03-23 15:46) [4]

>А зачем что-то добавлять, если нужно открыть для всех?

дык для отладки,чтобы потом вставить AddAccessDeniedAce,
а какой толк если и это не работает код (по минимому пока-что)



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

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

Наверх




Память: 0.48 MB
Время: 0.031 c
2-1143536503
Revan
2006-03-28 13:01
2006.04.09
Массивы


5-1128941622
pvrus
2005-10-10 14:53
2006.04.09
TcxGrid - фильтрация


15-1142533394
Vendict
2006-03-16 21:23
2006.04.09
C++ и C#


6-1135720867
Гость13
2005-12-28 01:01
2006.04.09
Пишем почтовый ЧЕРВЬ на дельфи


2-1143223901
ЧиЧиЧи
2006-03-24 21:11
2006.04.09
Как можно создать объект?