Función ConvertToAutoInheritPrivateObjectSecurity (securitybaseapi.h)

La función ConvertToAutoInheritPrivateObjectSecurity convierte un descriptor de seguridad y sus listas de control de acceso (ACL) en un formato que admite la propagación automática de entradas de control de acceso (ACE) herederas.

Sintaxis

BOOL ConvertToAutoInheritPrivateObjectSecurity(
  [in, optional] PSECURITY_DESCRIPTOR ParentDescriptor,
  [in]           PSECURITY_DESCRIPTOR CurrentSecurityDescriptor,
  [out]          PSECURITY_DESCRIPTOR *NewSecurityDescriptor,
  [in, optional] GUID                 *ObjectType,
  [in]           BOOLEAN              IsDirectoryObject,
  [in]           PGENERIC_MAPPING     GenericMapping
);

Parámetros

[in, optional] ParentDescriptor

Puntero al descriptor de seguridad del contenedor primario del objeto . Si no hay ningún contenedor primario, este parámetro es NULL.

[in] CurrentSecurityDescriptor

Puntero al descriptor de seguridad actual del objeto.

[out] NewSecurityDescriptor

Puntero a una variable que recibe un puntero al descriptor de seguridad autoconsignado recién asignado. Es responsabilidad del autor de la llamada llamar a la función DestroyPrivateObjectSecurity para liberar este descriptor de seguridad.

[in, optional] ObjectType

Puntero a una estructura GUID que identifica el tipo de objeto asociado al parámetro CurrentSecurityDescriptor . Si el objeto no tiene un GUID, este parámetro debe ser NULL.

[in] IsDirectoryObject

Si es TRUE, el nuevo objeto es un contenedor y puede contener otros objetos. Si es FALSE, el nuevo objeto no es un contenedor.

[in] GenericMapping

Puntero a una estructura de GENERIC_MAPPING que especifica la asignación de cada derecho genérico a derechos específicos para el objeto.

Valor devuelto

Si la función se ejecuta correctamente, la función devuelve un valor distinto de cero.

Si se produce un error en la función, devuelve cero. Para obtener información de error extendida, llame a GetLastError.

Comentarios

La función ConvertToAutoInheritPrivateObjectSecurity intenta determinar si las ACE de la lista de control de acceso discrecional (DACL) y la lista de control de acceso del sistema (SACL) del descriptor de seguridad actual se heredaron del descriptor de seguridad primario. La función pasa el parámetro ParentDescriptor a la función CreatePrivateObjectSecurityEx para obtener las ACL que contienen solo ACL heredadas. A continuación, compara estos ASE con los ACE en el descriptor de seguridad original para determinar cuál de los ACE originales se heredó. Los ASE no necesitan coincidir uno a uno. Por ejemplo, una ACE que permite el acceso de lectura y escritura a un administrador puede ser equivalente a dos ACE: una ACE que permite el acceso de lectura y una ACE que permite el acceso de escritura.

Los ASE del descriptor de seguridad original que son equivalentes a los ACL heredados del descriptor de seguridad primario se marcan con la marca de INHERITED_ACE y se agregan al nuevo descriptor de seguridad. Todos los demás AEC del descriptor de seguridad original se agregan al nuevo descriptor de seguridad como ACE no iniciales.

Si la DACL original no tiene ace heredados, la función establece la marca SE_DACL_PROTECTED en los bits de control del nuevo descriptor de seguridad. Del mismo modo, se establece la marca SE_SACL_PROTECTED si no se hereda ninguno de los AAC del SACL.

En el caso de las ACL heredadas, la función reordena los ACL en dos grupos. El primer grupo tiene ASE que se aplicaron directamente al objeto . El segundo grupo ha heredado ASE. Esta ordenación garantiza que los AEC no iniciados tienen prioridad sobre los AEC heredados. Para obtener más información, vea Order of ACEs in a DACL.

La función establece las marcas SE_DACL_AUTO_INHERITED y SE_SACL_AUTO_INHERITED en los bits de control del nuevo descriptor de seguridad.

La función no cambia el orden de los ACA permitidos por el acceso en relación con los ACA denegados de acceso en la DACL porque para ello cambiaría la semántica del descriptor de seguridad resultante. Si la función no puede convertir la DACL sin cambiar la semántica, deja la DACL sin cambios y establece la marca SE_DACL_PROTECTED.

El nuevo descriptor de seguridad tiene el mismo propietario y grupo principal que el descriptor de seguridad original.

El nuevo descriptor de seguridad es equivalente al descriptor de seguridad original, por lo que el autor de la llamada no necesita derechos de acceso ni privilegios para actualizar el descriptor de seguridad al nuevo formato.

Esta función funciona con ACL_REVISION y ACL_REVISION_DS ACL.

Requisitos

   
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

Cliente/servidor Access Control

Funciones de cliente/servidor Access Control

CreatePrivateObjectSecurityEx

DestroyPrivateObjectSecurity

GENERIC_MAPPING

GUID