Главная страница
    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
11-1096279528
SPeller
2004-09-27 14:05
2006.04.09
Глюк компилятора


2-1143500522
Da Stranger
2006-03-28 03:02
2006.04.09
Изменение размера массива


15-1142359435
Defunct
2006-03-14 21:03
2006.04.09
устойчивость CRC


2-1143213758
Nirvana
2006-03-24 18:22
2006.04.09
Вопрос по DBLookupComboBox


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





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский