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

Вниз

Помогите с 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2002.11.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.006 c
1-21657
Dim_460
2002-10-27 16:07
2002.11.07
Загрузка рисунка c URL средствами Delphi


14-21733
Anatoly Podgoretsky
2002-10-18 07:59
2002.11.07
Именинники 18 октября


3-21367
SkyWalker
2002-10-17 12:29
2002.11.07
BDE


14-21747
Beginner-Designer
2002-10-18 10:51
2002.11.07
Способы ввода URL a


14-21787
MaRC
2002-10-19 14:09
2002.11.07
Нужен компонент





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