Compartilhar via


Função AddAccessDeniedObjectAce (securitybaseapi.h)

A função AddAccessDeniedObjectAce adiciona uma ACE (entrada de controle de acesso negado) ao final de uma DACL ( lista de controle de acesso discricionário ). A nova ACE pode negar o acesso a um objeto ou a um conjunto de propriedades ou propriedade em um objeto . Você também pode usar AddAccessDeniedObjectAce para adicionar uma ACE que somente um tipo especificado de objeto filho pode herdar.

Sintaxe

BOOL AddAccessDeniedObjectAce(
  [in, out]      PACL  pAcl,
  [in]           DWORD dwAceRevision,
  [in]           DWORD AceFlags,
  [in]           DWORD AccessMask,
  [in, optional] GUID  *ObjectTypeGuid,
  [in, optional] GUID  *InheritedObjectTypeGuid,
  [in]           PSID  pSid
);

Parâmetros

[in, out] pAcl

Um ponteiro para uma DACL. A função AddAccessDeniedObjectAce adiciona uma ACE negada pelo acesso ao final desta DACL. A ACE está na forma de uma estrutura ACCESS_DENIED_OBJECT_ACE .

[in] dwAceRevision

Especifica o nível de revisão da DACL que está sendo modificada. Esse valor deve ser ACL_REVISION_DS. Se o nível de revisão da DACL for inferior a ACL_REVISION_DS, a função o alterará para ACL_REVISION_DS.

[in] AceFlags

Um conjunto de sinalizadores de bits que controlam a herança da ACE. A função define esses sinalizadores no membro AceFlags da estrutura ACE_HEADER do novo ACE. Esse parâmetro pode ser uma combinação dos seguintes valores.

Valor Significado
CONTAINER_INHERIT_ACE
A ACE é herdada por objetos de contêiner.
INHERIT_ONLY_ACE
A ACE não se aplica ao objeto ao qual a ACL ( lista de controle de acesso ) é atribuída, mas pode ser herdada por objetos filho.
INHERITED_ACE
Indica uma ACE herdada. Esse sinalizador permite que operações que alterem a segurança em uma árvore de objetos modifiquem ACEs herdadas, sem alterar ACEs que foram aplicadas diretamente ao objeto.
NO_PROPAGATE_INHERIT_ACE
Os bits OBJECT_INHERIT_ACE e CONTAINER_INHERIT_ACE não são propagados para uma ACE herdada.
OBJECT_INHERIT_ACE
O ACE é herdado por objetos não pertencentes a contêineres.

[in] AccessMask

Um conjunto de sinalizadores de bits que usam o formato ACCESS_MASK para especificar os direitos de acesso que a nova ACE nega ao SID ( identificador de segurança ) especificado.

[in, optional] ObjectTypeGuid

Um ponteiro para uma estrutura GUID que identifica o tipo de objeto, conjunto de propriedades ou propriedade protegido pelo novo ACE. Se esse parâmetro for NULL, o novo ACE protegerá o objeto ao qual a ACL é atribuída.

[in, optional] InheritedObjectTypeGuid

Um ponteiro para uma estrutura GUID que identifica o tipo de objeto que pode herdar o novo ACE. Se esse parâmetro não for NULL, somente o tipo de objeto especificado poderá herdar o ACE. Se FOR NULL, qualquer tipo de objeto filho poderá herdar o ACE. Em ambos os casos, a herança também é controlada pelo valor do parâmetro AceFlags , bem como por qualquer proteção contra herança colocada nos objetos filho.

[in] pSid

Um ponteiro para um SID que identifica a sessão de usuário, grupo ou logon à qual a nova ACE permite o acesso.

Valor retornado

Se a função for bem-sucedida, o valor retornado será diferente de zero.

Se a função falhar, o valor retornado será zero. Para obter informações de erro estendidas, chame GetLastError. Veja a seguir os possíveis valores de erro.

Código de retorno Descrição
ERROR_ALLOTTED_SPACE_EXCEEDED
A nova ACE não se encaixa na ACL. Um buffer de ACL maior é necessário.
ERROR_INVALID_ACL
A ACL especificada não está formada corretamente.
ERROR_INVALID_FLAGS
O parâmetro AceFlags não é válido.
ERROR_INVALID_SID
O SID especificado não é estruturalmente válido.
ERROR_REVISION_MISMATCH
A revisão especificada não é conhecida ou é incompatível com a da ACL.
ERROR_SUCCESS
O ACE foi adicionado com êxito.

Comentários

Se ObjectTypeGuid e InheritedObjectTypeGuid forem NULL, use a função AddAccessDeniedAceEx em vez de AddAccessDeniedObjectAce. Isso é sugerido porque um ACCESS_DENIED_ACE é menor e mais eficiente do que um ACCESS_DENIED_OBJECT_ACE.

Embora a função AddAccessDeniedObjectAce adicione o novo ACE ao final da ACL, ACEs negados pelo acesso devem aparecer no início de uma ACL. O chamador deve garantir que as ACEs sejam adicionadas à DACL na ordem correta. Para obter mais informações, consulte Ordem das ACEs em uma DACL.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho securitybaseapi.h (inclua Windows.h)
Biblioteca Advapi32.lib
DLL Advapi32.dll

Confira também

ACCESS_DENIED_ACE

ACCESS_DENIED_OBJECT_ACE

ACCESS_MASK

ACE_HEADER

AddAccessAllowedObjectAce

AddAccessDeniedAceEx

AddAuditAccessObjectAce

GUID

Controle de Acesso de baixo nível

Funções de Controle de Acesso de baixo nível