Partilhar via


Classe CDacl

Observação

A Active Template Library (ATL) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.

Esta classe é um wrapper para uma estrutura DACL (lista de controlo de acesso discricionária).

Importante

Esta classe e os seus membros não podem ser usados em aplicações que sejam executadas no Windows Runtime.

Sintaxe

class CDacl : public CAcl

Membros

Construtores Públicos

Nome Description
CDacl::CDacl O construtor.
CDacl::~CDacl O destruidor.

Métodos Públicos

Nome Description
CDacl::AddAllowedAce Adiciona um ACE (entrada de controlo de acesso) permitido ao CDacl objeto.
CDacl::AddDeniedAce Adiciona um ACE negado ao CDacl objeto.
CDacl::GetAceCount Devolve o número de ACEs (entradas de controlo de acesso) no CDacl objeto.
CDacl::RemoveAce Remove uma ACE específica (entrada de controlo de acesso) do CDacl objeto.
CDacl::RemoveAllAces Remove todos os ACEs contidos no CDacl objeto.

Operadores Públicos

Nome Description
CDacl::operator = Operador de atribuição.

Observações

O descritor de segurança de um objeto pode conter um DACL. Um DACL contém zero ou mais ACEs (entradas de controlo de acesso) que identificam os utilizadores e grupos que podem aceder ao objeto. Se um DACL estiver vazio (ou seja, não contiver ACEs), nenhum acesso é explicitamente concedido, pelo que o acesso é implicitamente negado. No entanto, se o descritor de segurança de um objeto não tiver DACL, o objeto fica desprotegido e todos têm acesso completo.

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

Use os métodos de classe fornecidos para criar, adicionar, remover e eliminar ACEs do CDacl objeto. Ver também AtlGetDacl e AtlSetDacl.

Para uma introdução ao modelo de controlo de acesso no Windows, veja Controlo de Acesso no SDK do Windows.

Hierarquia de herança

CAcl

CDacl

Requerimentos

Cabeçalho: atlsecurity.h

CDacl::AddAllowedAce

Adiciona um ACE (entrada de controlo de acesso) permitido ao CDacl objeto.

bool AddAllowedAce(
    const CSid& rSid,
    ACCESS_MASK AccessMask,
    BYTE AceFlags = 0) throw(...);

bool AddAllowedAce(
    const CSid& rSid,
    ACCESS_MASK AccessMask,
    BYTE AceFlags,
    const GUID* pObjectType,
    const GUID* pInheritedObjectType) throw(...);

Parâmetros

rSid
Um objeto CSid .

AccessMask
Especifica a máscara de direitos de acesso a permitir para o objeto especificado CSid .

AceFlags
Um conjunto de flags de bits que controlam a herança ACE.

pObjectType
O tipo de objeto.

pInheritedObjectType
O tipo de objeto herdado.

Valor de retorno

Retorna TRUE se o ACE for adicionado ao CDacl objeto, FALSE em caso de falha.

Observações

Um CDacl objeto contém zero ou mais ACEs (entradas de controlo de acesso) que identificam os utilizadores e grupos que podem aceder ao objeto. Este método adiciona um ACE que permite o acesso ao CDacl objeto.

Veja ACE_HEADER para uma descrição das várias bandeiras que podem ser definidas no AceFlags parâmetro.

CDacl::AddDeniedAce

Adiciona um ACE (entrada de controlo de acesso) negado ao CDacl objeto.

bool AddDeniedAce(
    const CSid& rSid,
    ACCESS_MASK AccessMask,
    BYTE AceFlags = 0) throw(...);

bool AddDeniedAce(
    const CSid& rSid,
    ACCESS_MASK AccessMask,
    BYTE AceFlags,
    const GUID* pObjectType,
    const GUID* pInheritedObjectType) throw(...);

Parâmetros

rSid
Um objeto CSid.

AccessMask
Especifica a máscara de direitos de acesso a ser negada para o objeto especificado CSid .

AceFlags
Um conjunto de flags de bits que controlam a herança ACE. Por defeito é 0 na primeira forma do método.

pObjectType
O tipo de objeto.

pInheritedObjectType
O tipo de objeto herdado.

Valor de retorno

Retorna TRUE se o ACE for adicionado ao CDacl objeto, FALSE em caso de falha.

Observações

Um CDacl objeto contém zero ou mais ACEs (entradas de controlo de acesso) que identificam os utilizadores e grupos que podem aceder ao objeto. Este método adiciona um ACE que nega o acesso ao CDacl objeto.

Veja ACE_HEADER para uma descrição das várias bandeiras que podem ser definidas no AceFlags parâmetro.

CDacl::CDacl

O construtor.

CDacl (const ACL& rhs) throw(...);
CDacl () throw();

Parâmetros

RHS
Uma estrutura existente ACL (lista de controlo de acesso).

Observações

O CDacl objeto pode ser criado opcionalmente usando uma estrutura existente ACL . É importante notar que apenas uma DACL (lista discricionária de controlo de acesso), e não uma SACL (lista de controlo de acesso do sistema), deve ser passada como este parâmetro. Em builds de depuração, passar um SACL causa um ASSERT. Nas versões de release, passar um SACL fará com que as ACEs (entradas de controlo de acesso) na ACL sejam ignoradas, sem que haja erro.

CDacl::~CDacl

O destruidor.

~CDacl () throw();

Observações

O destruidor liberta quaisquer recursos adquiridos pelo objeto, incluindo todos os ACEs (entradas de controlo de acesso) usando CDacl::RemoveAllAces.

CDacl::GetAceCount

Devolve o número de ACEs (entradas de controlo de acesso) no CDacl objeto.

UINT GetAceCount() const throw();

Valor de retorno

Devolve o número de ACEs contidos no CDacl objeto.

CDacl::operator =

Operador de atribuição.

CDacl& operator= (const ACL& rhs) throw(...);

Parâmetros

RHS
A ACL (lista de controlo de acesso) para atribuir ao objeto existente.

Valor de retorno

Devolve uma referência ao objeto atualizado CDacl .

Observações

Deve garantir que apenas passa uma DACL (lista de controlo de acesso discricionária) para esta função. Passar uma SACL (lista de controlo de acesso ao sistema) para esta função causará um ASSERT nas compilações de depuração, mas não causará erro nas versões de release.

CDacl::RemoveAce

Remove uma ACE específica (entrada de controlo de acesso) do CDacl objeto.

void RemoveAce(UINT nIndex) throw();

Parâmetros

nIndex
Índice para a entrada ACE para remover.

Observações

Este método deriva de CAtlArray::RemoveAt.

CDacl::RemoveAllAces

Remove todas as ACEs (entradas de controlo de acesso) contidas no CDacl objeto.

void RemoveAllAces() throw();

Observações

Remove todas as ACE estruturas (entrada de controlo de acesso) (se existirem) no CDacl objeto.

Consulte também

Exemplo de Segurança
Classe CAcl
ACLs
ACEs
Visão geral da classe
Funções Globais de Segurança