Función ConvertToAutoInheritPrivateObjectSecurity (securitybaseapi.h)

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

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 autodirección asignado recientemente. 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 solo contienen ACL heredadas. A continuación, compara estos ASE con los ACE en el descriptor de seguridad original para determinar cuáles de las ACE originales se heredaron. Los ACE 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.

Todas las ACE del descriptor de seguridad original equivalentes a las ACE heredadas del descriptor de seguridad primario se marcan con la marca INHERITED_ACE y se agregan al nuevo descriptor de seguridad. Todos los demás ACE del descriptor de seguridad original se agregan al nuevo descriptor de seguridad como ACE noheritadas.

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

En el caso de las DACL que tienen ACE heredadas, la función reordena los ACL en dos grupos. El primer grupo tiene ACE que se aplicaron directamente al objeto . El segundo grupo ha heredado acees. Esta ordenación garantiza que los ACE noheritados tengan prioridad sobre los ACE heredadas. Para más información, consulte Orden de las entradas de control de acceso en una lista de control de acceso discrecional.

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 las ACE permitidas por el acceso en relación con los ACE 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

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 Control cliente/servidor

Funciones de Access Control cliente/servidor

CreatePrivateObjectSecurityEx

DestroyPrivateObjectSecurity

GENERIC_MAPPING

GUID