Función GetSecurityInfo (aclapi.h)

La función GetSecurityInfo recupera una copia del descriptor de seguridad de un objeto especificado por un identificador.

Sintaxis

DWORD GetSecurityInfo(
  [in]            HANDLE               handle,
  [in]            SE_OBJECT_TYPE       ObjectType,
  [in]            SECURITY_INFORMATION SecurityInfo,
  [out, optional] PSID                 *ppsidOwner,
  [out, optional] PSID                 *ppsidGroup,
  [out, optional] PACL                 *ppDacl,
  [out, optional] PACL                 *ppSacl,
  [out, optional] PSECURITY_DESCRIPTOR *ppSecurityDescriptor
);

Parámetros

[in] handle

Identificador del objeto desde el que se va a recuperar la información de seguridad.

[in] ObjectType

SE_OBJECT_TYPE valor de enumeración que indica el tipo de objeto.

[in] SecurityInfo

Conjunto de marcas de bits que indican el tipo de información de seguridad que se va a recuperar. Este parámetro puede ser una combinación de las marcas de bits de SECURITY_INFORMATION .

[out, optional] ppsidOwner

Puntero a una variable que recibe un puntero al SID de propietario en el descriptor de seguridad devuelto en ppSecurityDescriptor. El puntero devuelto solo es válido si establece la marca OWNER_SECURITY_INFORMATION. Este parámetro puede ser NULL si no necesita el SID de propietario.

[out, optional] ppsidGroup

Puntero a una variable que recibe un puntero al SID del grupo principal en el descriptor de seguridad devuelto. El puntero devuelto solo es válido si establece la marca GROUP_SECURITY_INFORMATION. Este parámetro puede ser NULL si no necesita el SID del grupo.

[out, optional] ppDacl

Puntero a una variable que recibe un puntero a la DACL en el descriptor de seguridad devuelto. El puntero devuelto solo es válido si establece la marca DACL_SECURITY_INFORMATION. Este parámetro puede ser NULL si no necesita la DACL.

[out, optional] ppSacl

Puntero a una variable que recibe un puntero al SACL en el descriptor de seguridad devuelto. El puntero devuelto solo es válido si establece la marca SACL_SECURITY_INFORMATION. Este parámetro puede ser NULL si no necesita la SACL.

[out, optional] ppSecurityDescriptor

Puntero a una variable que recibe un puntero al descriptor de seguridad del objeto. Cuando haya terminado de usar el puntero, libere el búfer devuelto llamando a la función LocalFree .

Este parámetro es necesario si alguno de los parámetros ppsidOwner, ppsidGroup, ppDacl o ppSacl no es NULL.

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto es ERROR_SUCCESS.

Si se produce un error en la función, el valor devuelto es un código de error distinto de cero definido en WinError.h.

Comentarios

Si los parámetros ppsidOwner, ppsidGroup, ppDacl y ppSacl no son NULL y el parámetro SecurityInfo especifica que se recuperarán del objeto, esos parámetros apuntarán a los parámetros correspondientes en el descriptor de seguridad devuelto en ppSecurityDescriptor.

Para leer el propietario, el grupo o la DACL del descriptor de seguridad del objeto, el proceso de llamada se debe haber concedido READ_CONTROL acceso cuando se abrió el identificador. Para obtener READ_CONTROL acceso, el autor de la llamada debe ser el propietario del objeto o la DACL del objeto debe conceder el acceso.

Para leer sacl desde el descriptor de seguridad, se debe haber concedido al proceso de llamada ACCESS_SYSTEM_SECURITY acceso cuando se abrió el identificador. La manera adecuada de obtener este acceso es habilitar el privilegio SE_SECURITY_NAME en el token actual del autor de la llamada, abrir el identificador para ACCESS_SYSTEM_SECURITY acceso y, a continuación, deshabilitar el privilegio. Para obtener información sobre las implicaciones de seguridad de habilitar privilegios, consulte Ejecución con privilegios especiales.

Puede usar la función GetSecurityInfo con los siguientes tipos de objetos:

  • Archivos o directorios locales o remotos en un sistema de archivos NTFS
  • Canalizaciones con nombre
  • Impresoras locales o remotas
  • Servicios locales o remotos de Windows
  • Recursos compartidos de red
  • Claves del Registro
  • Semáforos, eventos, exclusiones mutuas y temporizadores de espera
  • Procesos, subprocesos, trabajos y objetos de asignación de archivos
  • Estaciones de servicio interactivas y escritorios
  • Objetos de servicio de directorio
Esta función no controla las condiciones de carrera. Si el subproceso llama a esta función en el momento aproximado en que otro subproceso cambia el descriptor de seguridad del objeto, esta función podría producir un error.

Ejemplos

Para obtener un ejemplo que usa esta función, vea Buscar el propietario de un objeto de archivo.

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2003 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado aclapi.h
Library Advapi32.lib
Archivo DLL Advapi32.dll

Consulte también

ACL

Información general del control de acceso

Funciones básicas de Access Control

GetNamedSecurityInfo

LocalFree

Constantes de privilegios

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

SE_OBJECT_TYPE

SID

SetNamedSecurityInfo

SetSecurityInfo