Главная страница
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
5-1159773491
Image
2006-10-02 11:18
2007.08.19
Событие OnTimer в созданном компоненте


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


3-1178391336
Wiser87
2007-05-05 22:55
2007.08.19
Сортировка в DBEdit


2-1185404147
Альберт
2007-07-26 02:55
2007.08.19
и еще об окне поверх остальных


15-1184747898
TDN
2007-07-18 12:38
2007.08.19
Диск-реаниматор к ноутбуку