Низкоуровневые функции ACL и ACE

Чтобы создать список управления доступом (ACL) с помощью низкоуровневых функций, выделите буфер для ACL, а затем инициализируйте его, вызвав функцию InitializeAcl . Чтобы добавить записи управления доступом (ACE) в конец списка управления доступом на уровне пользователей (DACL), используйте функции AddAccessAllowedAce и AddAccessDeniedAce . Функция AddAuditAccessAce добавляет ACE в конец списка управления доступом системы (SACL). Функцию AddAce можно использовать для добавления одного или нескольких ACE в указанной позиции в списке ACL. Функция AddAce также позволяет добавить наследуемый ACE в ACL. Функция DeleteAce удаляет ACE из указанной позиции в списке ACL. Функция GetAce извлекает ACE из указанной позиции в списке ACL. Функция FindFirstFreeAce извлекает указатель на первый свободный байт в ACL.

Чтобы изменить существующий список управления доступом в дескрипторе безопасности объекта, используйте функцию GetSecurityDescriptorDacl или GetSecurityDescriptorSacl , чтобы получить существующий ACL. Для копирования ACE из существующего списка ACL можно использовать функцию GetAce . После выделения и инициализации нового списка управления доступом используйте такие функции, как AddAccessAllowedAce и AddAce , чтобы добавить в него ACE. Завершив сборку нового списка управления доступом, используйте функцию SetSecurityDescriptorDacl или SetSecurityDescriptorSacl , чтобы добавить новый ACL в дескриптор безопасности объекта.

Вы можете использовать функции AddAccessAllowedObjectAce, AddAccessDeniedObjectAce или AddAuditAccessObjectAce для добавления объектов ACE в конец ACL.