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

Вниз

Помогите с ACL!!!!!!!!!! Никак не удается получить список АСЕ   Найти похожие ветки 

 
TPig ©   (2002-09-24 16:01) [0]

Пытаюсь сделать инструментарий для разрешения/запрешения/изменения доступа к файлам, папкам, дискам, смотрю МСДН по вопросам безопаности в NT. Все работает кроме получения АСЕ, вот код подскажите где может быть ошибка?

function GetObjectPermissions(szObjectName: LPTSTR): Boolean;
var
ObjType: SE_OBJECT_TYPE;
pOwnerSID: PPSID;
pGroupSID: PPSID;
pDACL: PACL;
pSACL: PACL;
pSID: PSECURITY_DESCRIPTOR;
lpAceHeader: PACE_HEADER;
//pAce: ^PACE_HEADER;
pAce: PACL;
i: Integer;
X: DWORD; //as ERRORCODE
begin
//Надо бы получить идентификатор системы те какая файловая система FAT32, NTFS
//Пытаемся читать свойства объекта
//Конкретно файла или каталога
X:=GetNamedSecurityInfo(szObjectName,
SE_FILE_OBJECT,
DACL_SECURITY_INFORMATION,
pOwnerSID,
nil,
@pDACL,
nil,
pSID);
if (X=NERR_Success) and (pDACL<>nil) then begin
i:=0;
//Для каждой записи получаем структуру
while (GetAce(pDACL,i,pAce)) do begin
ShowMessage(intToStr(x));
i:=pDACL.AceCount;
ShowMessage(intToStr(i));
inc(i);
end;
X:=GetLastError;
ShowMessage("Errorcode: " + intToStr(x));
end;
end;


 
Набережных С.   (2002-09-24 20:33) [1]

У тебя, случаем, жара нет?:)) Попробуй так:

type
TACLSizeInfo = record
AceCount: DWORD;
AclBytesInUse: DWORD;
AclBytesFree: DWORD;
end;

function GetObjectPermissions(szObjectName: LPTSTR): Boolean;
var
ObjType: SE_OBJECT_TYPE;
pOwnerSID: PSID;
pGroupSID: PSID;
pDACL: PACL;
pSACL: PACL;
pSID: PSECURITY_DESCRIPTOR;
// lpAceHeader: PACE_HEADER;
//pAce: ^PACE_HEADER;
pAce: PACL;
i: DWORD;
X: DWORD; //as ERRORCODE

n:integer;
SizeInfo:TACLSizeInfo;
begin
//Надо бы получить идентификатор системы те какая файловая система FAT32, NTFS
//Пытаемся читать свойства объекта
//Конкретно файла или каталога
X:=GetNamedSecurityInfo(szObjectName,
SE_FILE_OBJECT,
DACL_SECURITY_INFORMATION,
@pOwnerSID,
nil,
@pDACL,
nil,
pSID);
if X <> ERROR_Success then
begin
SetLastError(X);
RaiseLastWin32Error;
end;
try
if pDACL = nil then Exit;
i:=0;
//Для каждой записи получаем структуру
if not GetAclInformation(pDACL^,@SizeInfo,SizeOf(SizeInfo),AclSizeInformation)then RaiseLastWin32Error;
ShowMessage(intToStr(SizeInfo.AceCount));
while i < SizeInfo.AceCount do
begin
(GetAce(pDACL^,i,Pointer(pAce)));
// Работай с АСЕ здесь
inc(i);
end;
finally
LocalFree(Cardinal(pSID));
end;
end;

P.S. Может, пока не стоит?


 
Набережных С.   (2002-09-25 09:02) [2]

Черт, у меня вчера тоже был жар. Конечно, нужно так:
pAce: ^PACE_HEADER;
Что-же никто не поправил-то? Явная же глупость...


 
TPig ©   (2002-09-25 11:03) [3]

Лана пасиба за сочувствие =) и участие вопрос закрыт, тк разобрался сам!



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

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

Наверх




Память: 0.48 MB
Время: 0.016 c
1-21465
Kiksss
2002-10-28 09:06
2002.11.07
Как изменить на mbYes и mbNo Yes на


4-21886
Сатир
2002-09-27 15:26
2002.11.07
Получения цвета точки в консольном приложении


3-21456
sdram
2002-10-21 14:22
2002.11.07
Удаляющий запрос


1-21597
Higs
2002-10-30 12:47
2002.11.07
Обход всех контролов


6-21699
BillyJeans
2002-09-05 10:36
2002.11.07
Нужна прога под NT, которая считает трафик...