Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.04.09;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.012 c
1-1141697273
Papa
2006-03-07 05:07
2006.04.09
Копирование объектов в D7


4-1137408080
Vile
2006-01-16 13:41
2006.04.09
Неполный перехват задач принтеров


11-1124445785
Fuego
2005-08-19 14:03
2006.04.09
DrawText


2-1143042991
mrAndersen
2006-03-22 18:56
2006.04.09
CopyFile


4-1137952300
spyrytus
2006-01-22 20:51
2006.04.09
Как заставить работать функцию из DLL "вечно".





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский