Partilhar via


Classe CAcl

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 ACL estrutura (lista de controlo de acesso).

Importante

Essa classe e seus membros não podem ser usados em aplicativos executados no Tempo de Execução do Windows.

Sintaxe

class CAcl

Membros

Definições de Tipos Públicas

Nome Description
CAcl::CAccessMaskArray Uma variedade de ACCESS_MASKs.
CAcl::CAceFlagArray Um conjunto de BYTES.
CAcl::CAceTypeArray Um conjunto de BYTES.

Construtores Públicos

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

Métodos Públicos

Nome Description
CAcl::GetAceCount Devolve o número de objetos de entrada de controlo de acesso (ACE).
CAcl::GetAclEntries Recupera as entradas da lista de controlo de acesso (ACL) do CAcl objeto.
CAcl::GetAclEntry Recupera toda a informação sobre uma entrada num CAcl objeto.
CAcl::GetLength Devolve o comprimento do LCA.
CAcl::GetPACL Devolve um PACL (apontador para um ACL).
CAcl::IsEmpty Testa o CAcl objeto para entradas.
CAcl::IsNull Devolve o estado do CAcl objeto.
CAcl::RemoveAce Remove uma ACE específica (entrada de controlo de acesso) do CAcl objeto.
CAcl::RemoveAces Remove todas as ACEs (entradas de controlo de acesso) do CAcl que se aplicam ao dado CSid.
CAcl::SetEmpty Marca o CAcl objeto como vazio.
CAcl::SetNull Marca o CAcl objeto como NULL.

Operadores Públicos

Nome Description
CAcl::operator const ACL * Lança um CAcl objeto numa ACL estrutura.
CAcl::operator = Operador de atribuição.

Observações

A ACL estrutura é o cabeçalho de uma ACL (lista de controlo de acesso). Uma ACL inclui uma lista sequencial de zero ou mais ACEs (entradas de controlo de acesso). Os ACEs individuais numa ACL são numerados de 0 a n-1, onde n é o número de ACEs na ACL. Ao editar uma ACL, uma aplicação refere-se a uma entrada de controlo de acesso (ACE) dentro da ACL pelo seu índice.

Existem dois tipos de LCA:

  • Discricionário

  • Sistema

Um ACL discricionário é controlado pelo proprietário de um objeto ou por qualquer pessoa que tenha WRITE_DAC acesso ao objeto. Especifica o acesso que determinados utilizadores e grupos podem ter a um objeto. Por exemplo, o proprietário de um ficheiro pode usar uma ACL discricionária para controlar quais utilizadores e grupos podem ou não ter acesso ao ficheiro.

Um objeto pode também ter informação de segurança ao nível do sistema associada, sob a forma de uma ACL de sistema controlada por um administrador de sistema. Uma ACL de sistema pode permitir que o administrador do sistema audite quaisquer tentativas de acesso a um objeto.

Para mais detalhes, consulte a discussão sobre ACL no SDK do Windows.

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

Requerimentos

Cabeçalho: atlsecurity.h

CAcl::CAccessMaskArray

Um conjunto de ACCESS_MASK objetos.

typedef CAtlArray<ACCESS_MASK> CAccessMaskArray;

Observações

Este tipo de definição especifica o tipo de array que pode ser usado para armazenar direitos de acesso usados em entradas de controlo de acesso (ACEs).

CAcl::CAceFlagArray

Um conjunto de BYTES.

typedef CAtlArray<BYTE> CAceFlagArray;

Observações

Este tipodef especifica o tipo de array usado para definir as flags de controlo de acesso (ACE) específicas para o tipo de controlo de controlo (ACE). Consulte a definição ACE_HEADER para a lista completa de possíveis flags.

CAcl::CAceTypeArray

Um conjunto de BYTES.

typedef CAtlArray<BYTE> CAceTypeArray;

Observações

Este tipo de definição especifica o tipo de array usado para definir a natureza dos objetos de entrada de controlo de acesso (ACE), como ACCESS_ALLOWED_ACE_TYPE ou ACCESS_DENIED_ACE_TYPE. Consulte a definição ACE_HEADER para a lista completa dos tipos possíveis.

CAcl::CAcl

O construtor.

CAcl() throw();
CAcl(const CAcl& rhs) throw(...);

Parâmetros

RHS
Um objeto existente CAcl .

Observações

O CAcl objeto pode ser criado opcionalmente usando um objeto existente CAcl .

CAcl::~CAcl

O destruidor.

virtual ~CAcl() throw();

Observações

O destruidor liberta quaisquer recursos adquiridos pelo objeto.

CAcl::GetAceCount

Devolve o número de objetos de entrada de controlo de acesso (ACE).

virtual UINT GetAceCount() const throw() = 0;

Valor de retorno

Devolve o número de entradas ACE no CAcl objeto.

CAcl::GetAclEntries

Recupera as entradas da lista de controlo de acesso (ACL) do CAcl objeto.

void GetAclEntries(
    CSid::CSidArray* pSids,
    CAccessMaskArray* pAccessMasks = NULL,
    CAceTypeArray* pAceTypes = NULL,
    CAceFlagArray* pAceFlags = NULL) const throw(...);

Parâmetros

pSids
Um apontador para um array de objetos CSid .

pAccessMasks
As máscaras de acesso.

pAceTypes
Os tipos de entrada de controlo de acesso (ACE).

pAceFlags
As bandeiras ACE.

Observações

Este método preenche os parâmetros do array com os detalhes de cada objeto ACE contido no CAcl objeto. Use NULL quando os detalhes desse array em particular não forem necessários.

O conteúdo de cada array corresponde entre si, ou seja, o primeiro elemento do CAccessMaskArray array corresponde ao primeiro elemento do CSidArray array, e assim sucessivamente.

Consulte ACE_HEADER para mais detalhes sobre tipos e flags de ACE.

CAcl::GetAclEntry

Recupera toda a informação sobre uma entrada numa lista de controlo de acesso (ACL).

void GetAclEntry(
    UINT nIndex,
    CSid* pSid,
    ACCESS_MASK* pMask = NULL,
    BYTE* pType = NULL,
    BYTE* pFlags = NULL,
    GUID* pObjectType = NULL,
    GUID* pInheritedObjectType = NULL) const throw(...);

Parâmetros

nIndex
Índice para a entrada ACL para recuperar.

pSid
O objeto CSid ao qual se aplica a entrada ACL.

pMask
A máscara especifica permissões para conceder ou negar acesso.

pType
Do tipo ACE.

pFlags
As bandeiras ACE.

pObjectType
O tipo de objeto. Isto será definido para GUID_NULL se o tipo de objeto não for especificado no ACE, ou se o ACE não for um ACE OBJECTO.

pInheritedObjectType
O tipo de objeto herdado. Isto será definido para GUID_NULL se o tipo de objeto herdado não estiver especificado no ACE, ou se o ACE não for um ACE OBJECTO.

Observações

Este método recupera toda a informação sobre um ACE individual, fornecendo mais informação do que o CAcl::GetAclEntries disponibiliza.

Consulte ACE_HEADER para mais detalhes sobre tipos e flags de ACE.

CAcl::GetLength

Devolve o comprimento da lista de controlo de acesso (ACL).

UINT GetLength() const throw();

Valor de retorno

Devolve o comprimento necessário em bytes para manter a ACL estrutura.

CAcl::GetPACL

Devolve um ponteiro para uma lista de controlo de acesso (ACL).

const ACL* GetPACL() const throw(...);

Valor de retorno

Devolve um ponteiro para a ACL estrutura.

CAcl::IsEmpty

Testa o CAcl objeto para entradas.

bool IsEmpty() const throw();

Observações

Retorna TRUE se o CAcl objeto não for NULL e não contiver entradas. Retorna FALSE se o CAcl objeto for NULL, ou contiver pelo menos uma entrada.

CAcl::IsNull

Devolve o estado do CAcl objeto.

bool IsNull() const throw();

Valor de retorno

Retorna TRUE se o CAcl objeto for NULL, FALSE caso contrário.

CAcl::operator const ACL *

Conjura um CAcl objeto para uma ACL estrutura (lista de controlo de acesso).

operator const ACL *() const throw(...);

Observações

Devolve o endereço da ACL estrutura.

CAcl::operator =

Operador de atribuição.

CAcl& operator= (const CAcl& rhs) throw(...);

Parâmetros

RHS
O CAcl para atribuir ao objeto existente.

Valor de retorno

Devolve uma referência ao objeto atualizado CAcl .

CAcl::RemoveAce

Remove uma ACE específica (entrada de controlo de acesso) do CAcl 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.

CAcl::RemoveAces

Remove todas as ACEs (entradas de controlo de acesso) do CAcl que se aplicam ao dado CSid.

bool RemoveAces(const CSid& rSid) throw(...)

Parâmetros

rSid
Uma referência a um objeto CSid.

CAcl::SetEmpty

Marca o CAcl objeto como vazio.

void SetEmpty() throw();

Observações

Podem CAcl ser definidos para vazio ou para NULL: os dois estados são distintos.

CAcl::SetNull

Marca o CAcl objeto como NULL.

void SetNull() throw();

Observações

Podem CAcl ser definidos para vazio ou para NULL: os dois estados são distintos.

Consulte também

Visão geral da classe
Funções Globais de Segurança