Низкоуровневые функции ACL и ACE
Чтобы создать список управления доступом (ACL) с помощью низкоуровневых функций, выделите буфер для ACL и инициализировать его, вызвав функцию InitializeAcl. Чтобы добавить записи управления доступом (ACEs) в конец списке управления доступом (DACL), используйте AddAccessAllowedAce и функции AddAccessDeniedAce. Функция AddAuditAccessAce добавляет ACE в конец системного списка управления доступом (SACL). Функцию AddAceможно использовать для добавления одного или нескольких acES в указанной позиции в списке ACL. Функция AddAce также позволяет добавить наследуемый ACE в ACL. Функция DeleteAce удаляет ACE из указанной позиции в списке ACL. Функция GetAce извлекает ACE из указанной позиции в ACL. Функция FindFirstFreeAce извлекает указатель на первый бесплатный байт в ACL.
Чтобы изменить существующий ACL в дескриптора безопасности объекта, используйте функцию GetSecurityDescriptorDacl или GetSecurityDescriptorSacl, чтобы получить существующий ACL. Функцию GetAceможно использоватьдля копирования acEs из существующего ACL. После выделения и инициализации нового списка ACL используйте такие функции, как AddAccessAllowedAce и AddAce, чтобы добавить в него acEs. После завершения создания нового ACL используйте функцию SetSecurityDescriptorDacl или SetSecurityDescriptorSacl, чтобы добавить новый ACL в дескриптор безопасности объекта.
Вы можете использовать функции AddAccessAllowedObjectAce, AddAccessDeniedObjectAceили AddAuditAccessObjectAce для добавления объектов в конец ACL.