Función AddAccessDeniedObjectAce (securitybaseapi.h)

La función AddAccessDeniedObjectAce agrega una entrada de control de acceso denegado (ACE) al final de una lista de control de acceso discrecional (DACL). La nueva ACE puede denegar el acceso a un objeto o a un conjunto de propiedades o a una propiedad en un objeto . También puede usar AddAccessDeniedObjectAce para agregar una ACE que solo puede heredar un tipo especificado de objeto secundario.

Sintaxis

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

Puntero a una DACL. La función AddAccessDeniedObjectAce agrega una ACE de acceso denegada al final de esta DACL. La ACE tiene la forma de una estructura de ACCESS_DENIED_OBJECT_ACE .

[in] dwAceRevision

Especifica el nivel de revisión de la DACL que se está modificando. Este valor debe ser ACL_REVISION_DS. Si el nivel de revisión de la DACL es inferior a ACL_REVISION_DS, la función la cambia a ACL_REVISION_DS.

[in] AceFlags

Un conjunto de marcas de bits que controlan la herencia ACE. La función establece estas marcas en el miembro AceFlags de la estructura ACE_HEADER de la nueva ACE. Este parámetro puede ser una combinación de los valores siguientes.

Value Significado
CONTAINER_INHERIT_ACE
Los objetos contenedores heredan la ACE.
INHERIT_ONLY_ACE
La ACE no se aplica al objeto al que se asigna la lista de control de acceso (ACL), pero los objetos secundarios pueden heredarla.
INHERITED_ACE
Indica una ACE heredada. Esta marca permite que las operaciones que cambien la seguridad en un árbol de objetos modifiquen las ACE heredadas, mientras que no cambian los ACA que se aplicaron directamente al objeto.
NO_PROPAGATE_INHERIT_ACE
Los bits OBJECT_INHERIT_ACE y CONTAINER_INHERIT_ACE no se propagan a una ACE heredada.
OBJECT_INHERIT_ACE
Los objetos que no son de contenedor heredan la ACE.

[in] AccessMask

Conjunto de marcas de bits que usan el formato de ACCESS_MASK para especificar los derechos de acceso que la nueva ACE deniega al identificador de seguridad (SID) especificado.

[in, optional] ObjectTypeGuid

Puntero a una estructura GUID que identifica el tipo de objeto, conjunto de propiedades o propiedad protegido por la nueva ACE. Si este parámetro es NULL, la nueva ACE protege el objeto al que se asigna la ACL.

[in, optional] InheritedObjectTypeGuid

Puntero a una estructura GUID que identifica el tipo de objeto que puede heredar la nueva ACE. Si este parámetro no es NULL, solo el tipo de objeto especificado puede heredar la ACE. Si es NULL, cualquier tipo de objeto secundario puede heredar la ACE. En cualquier caso, la herencia también se controla mediante el valor del parámetro AceFlags , así como cualquier protección contra la herencia colocada en los objetos secundarios.

[in] pSid

Puntero a un SID que identifica al usuario, grupo o sesión de inicio de sesión al que la nueva ACE permite el acceso.

Valor devuelto

Si la función se realiza correctamente, el valor devuelto es distinto de cero.

Si la función no se realiza correctamente, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError. A continuación se muestran los valores de error posibles.

Código devuelto Descripción
ERROR_ALLOTTED_SPACE_EXCEEDED
La nueva ACE no cabe en la ACL. Se requiere un búfer de ACL mayor.
ERROR_INVALID_ACL
La ACL especificada no tiene el formato correcto.
ERROR_INVALID_FLAGS
El parámetro AceFlags no es válido.
ERROR_INVALID_SID
El SID especificado no es estructuralmente válido.
ERROR_REVISION_MISMATCH
La revisión especificada no se conoce o no es incompatible con la de la ACL.
ERROR_SUCCESS
La ACE se agregó correctamente.

Comentarios

Si ObjectTypeGuid y InheritedObjectTypeGuid son NULL, use la función AddAccessDeniedAceEx en lugar de AddAccessDeniedObjectAce. Esto se sugiere porque un ACCESS_DENIED_ACE es más pequeño y más eficaz que un ACCESS_DENIED_OBJECT_ACE.

Aunque la función AddAccessDeniedObjectAce agrega la nueva ACE al final de la ACL, los ACE denegados de acceso deben aparecer al principio de una ACL. El autor de la llamada debe asegurarse de que los ACE se agregan a la DACL en el orden correcto. Para más información, consulte Orden de las entradas de control de acceso en una lista de control de acceso discrecional.

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado securitybaseapi.h (incluya Windows.h)
Library Advapi32.lib
Archivo DLL Advapi32.dll

Consulte también

ACCESS_DENIED_ACE

ACCESS_DENIED_OBJECT_ACE

ACCESS_MASK

ACE_HEADER

AddAccessAllowedObjectAce

AddAccessDeniedAceEx

AddAuditAccessObjectAce

GUID

Access Control de bajo nivel

Funciones de Access Control de bajo nivel