Главная страница
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.027 c
9-1157685661
tmtlib
2006-09-08 07:21
2007.08.19
Загрузка скелетной анимации из Blender!!!


1-1181395175
Ш-К
2007-06-09 17:19
2007.08.19
Как программно перевести HTML -> XHTML


5-1160122325
BadTester
2006-10-06 12:12
2007.08.19
Имеется задача pеализовать выдвижную панель на экpане


15-1184735259
Notebook
2007-07-18 09:07
2007.08.19
Как перезагрузить ноутбук?


15-1184927207
Layner
2007-07-20 14:26
2007.08.19
Эксперты по НДС !