Funções DE ACL e ACE de baixo nível
Para criar uma ACL ( lista de controle de acesso ) usando as funções de baixo nível, aloque um buffer para a ACL e, em seguida, inicialize-o chamando a função InitializeAcl . Para adicionar ACEs (entradas de controle de acesso ) ao final de uma DACL (lista de controle de acesso discricionário ), use as funções AddAccessAllowedAce e AddAccessDeniedAce . A função AddAuditAccessAce adiciona um ACE ao final de uma SACL ( lista de controle de acesso do sistema ). Você pode usar a função AddAce para adicionar um ou mais ACEs em uma posição especificada em uma ACL. A função AddAce também permite que você adicione um ACE herdável a uma ACL. A função DeleteAce remove um ACE de uma posição especificada em uma ACL. A função GetAce recupera um ACE de uma posição especificada em uma ACL. A função FindFirstFreeAce recupera um ponteiro para o primeiro byte livre em uma ACL.
Para modificar uma ACL existente no descritor de segurança de um objeto, use a função GetSecurityDescriptorDacl ou GetSecurityDescriptorSacl para obter a ACL existente. Você pode usar a função GetAce para copiar ACEs da ACL existente. Depois de alocar e inicializar uma nova ACL, use funções como AddAccessAllowedAce e AddAce para adicionar ACEs a ela. Quando terminar de criar a nova ACL, use a função SetSecurityDescriptorDacl ou SetSecurityDescriptorSacl para adicionar a nova ACL ao descritor de segurança do objeto.
Você pode usar as funções AddAccessAllowedObjectAce, AddAccessDeniedObjectAce ou AddAuditAccessObjectAce para adicionar ACEs específicos ao objeto ao final de uma ACL.