Share via


Recuperando a DACL de um objeto

O descritor de segurança de um objeto pode conter uma lista de controle de acesso discricionário (DACL). Uma DACL contém zero ou mais entradas de controle de acesso (ACEs) que identificam os usuários e grupos que podem acessar o objeto. Se uma DACL estiver vazia (ou seja, ela contém zero ACEs), nenhum acesso será concedido explicitamente, portanto, o acesso será negado implicitamente. No entanto, se o descritor de segurança de um objeto não tiver uma DACL, o objeto ficará desprotegido e todos terão acesso completo.

Para recuperar a DACL de um objeto, você deve ser o proprietário do objeto ou ter acesso READ_CONTROL ao objeto.

Para obter e definir a DACL de um objeto de diretório, use a interface IADsSecurityDescriptor. Usando C++, o método IADsSecurityDescriptor::get_DiscretionaryAcl retorna um ponteiro IDispatch. Chame QueryInterface nesse ponteiro IDispatch para obter uma interface IADsAccessControlList e use os métodos nessa interface para acessar as ACEs individuais na DACL. O procedimento para modificar uma DACL é descrito em Definindo direitos de acesso em um objeto.

Para enumerar as ACEs, use o método IADsAccessControlList::get__NewEnum . O método retorna um ponteiro IUnknown. Chame QueryInterface nesse ponteiro IUnknown para obter uma interface IEnumVARIANT. Use o método IEnumVARIANT::Next para enumerar as ACEs na ACL. Cada ACE é retornado como uma VARIANT contendo um ponteiro IDispatch (o membro vt é VT_DISPATCH). Chame QueryInterface nesse ponteiro IDispatch para obter uma interface IADsAccessControlEntrypara a ACE. Você pode usar os métodos da interface IADsAccessControlEntry para definir ou recuperar os componentes de uma ACE.

Para obter mais informações sobre DACLs e ACEs, consulte os tópicos a seguir no Platform Software Development Kit (SDK).