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

Вниз

SetFileSecurity   Найти похожие ветки 

 
Сергей Макс. ©   (2007-06-26 02:59) [0]

Как пользоваться этой функцией?
Подскажите.
Зарание признателен за ответ.


 
Джо ©   (2007-06-26 04:48) [1]

> [0] Сергей Макс. ©   (26.06.07 02:59)
> Как пользоваться этой функцией?
> Подскажите.
> Зарание признателен за ответ.

Я пользовался.
Что подсказать?
Пожалуйста.


 
Джо ©   (2007-06-26 04:49) [2]

Не ответил на вопрос «Как пользоваться?». Извините. Отвечаю: пользоваться традиционно.


 
Cj ©   (2007-06-26 09:56) [3]


> Как пользоваться этой функцией?



> Отвечаю: пользоваться традиционно.


всмысле в 24-ой?


 
Lacmus ©   (2007-07-25 16:52) [4]

Пример использования



uses
 AccCtrl, AclApi;

function FileSetAccess(const FileName, UserName: string; dwAccess : DWord) : Boolean;
var
 dwSize, dwError : DWord;
 bDaclPresent    : Bool;
 bDaclDefaulted  : Bool;
 ea              : EXPLICIT_ACCESS;
 OldAcl          : PACL;
 NewAcl          : PACL;
 psd             : PSECURITY_DESCRIPTOR;
 sd              : SECURITY_DESCRIPTOR;
begin
 Result := False; psd := nil; NewAcl := nil;
 if not GetFileSecurity(PChar(FileName), DACL_SECURITY_INFORMATION, Pointer(1),
           0, dwSize) and (GetLastError = ERROR_INSUFFICIENT_BUFFER) then try
   psd := HeapAlloc(GetProcessHeap, 8, dwSize);
   if psd <> nil then begin
     BuildExplicitAccessWithName(@ea, PChar(UserName), dwAccess,
                                 SET_ACCESS, SUB_CONTAINERS_AND_OBJECTS_INHERIT{NO_INHERITANCE});
     Result := GetFileSecurity(PChar(FileName), DACL_SECURITY_INFORMATION,
                               psd, dwSize, dwSize) and
        GetSecurityDescriptorDacl(psd, bDaclPresent, OldAcl, bDaclDefaulted) and
        (SetEntriesInAcl(1, @ea, OldAcl, NewAcl) = ERROR_SUCCESS) and
        InitializeSecurityDescriptor(@sd, SECURITY_DESCRIPTOR_REVISION) and
        SetSecurityDescriptorDacl(@sd, True, NewAcl, False) and
        SetFileSecurity(PChar(FileName), DACL_SECURITY_INFORMATION, @sd);
   end
 finally
   dwError := GetLastError;
   if NewAcl <> nil then
     LocalFree(HLocal(NewAcl));
   if psd <> nil then
     HeapFree(GetProcessHeap, 0, psd);
   SetLastError(dwError)
 end
end;



 
Инс ©   (2007-07-26 09:28) [5]


> Сергей Макс. ©   (26.06.07 02:59)
> Как пользоваться этой функцией?


Достаточно просто:
1. Создаете дескриптор безопасности (SD)
2. Создаете список контроля доступа (ACL)
3. Заносите в этот список элементы (ACE), управляющие доступом к файлу
4. Назначаете полученный список дескриптору дезопасности в качестве DACL
5. Передаете ссылку на дескриптор в SetFileSecurity

Осталось только прогуляться по гуглу, чтобы найти смысл всех сказанный в данном посте незнакомых словей. Успехов!



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

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

Наверх




Память: 0.48 MB
Время: 0.025 c
1-1181214309
Jkot
2007-06-07 15:05
2007.08.19
Проверка подключения к интернету


2-1184848479
Новичеек
2007-07-19 16:34
2007.08.19
из Vb в Delphi


15-1185094245
ElectriC
2007-07-22 12:50
2007.08.19
ID Tech 5


15-1184897351
Slider007
2007-07-20 06:09
2007.08.19
С днем рождения ! 20 июля 2007 пятница


15-1184882265
Kostafey
2007-07-20 01:57
2007.08.19
Поиск в Access - базе