Низкоуровневые функции 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 можно использовать для копирования ACL из существующего списка ACL. После выделения и инициализации нового списка ACL используйте такие функции, как AddAccessAllowedAce и AddAce , чтобы добавить в него ACL . Завершив сборку нового списка ACL, используйте функцию SetSecurityDescriptorDacl или SetSecurityDescriptorSacl , чтобы добавить новый список ACL в дескриптор безопасности объекта.

С помощью функций AddAccessAllowedObjectAce, AddAccessDeniedObjectAce или AddAuditAccessObjectAce можно добавить к концу ACL определенные объекты .