Función SetSecurityInfo (aclapi.h)

La función SetSecurityInfo establece la información de seguridad especificada en el descriptor de seguridad de un objeto especificado. El autor de la llamada identifica el objeto por un identificador.

Para establecer la SACL de un objeto, el autor de la llamada debe tener habilitado el privilegio SE_SECURITY_NAME .

Sintaxis

DWORD SetSecurityInfo(
  [in]           HANDLE               handle,
  [in]           SE_OBJECT_TYPE       ObjectType,
  [in]           SECURITY_INFORMATION SecurityInfo,
  [in, optional] PSID                 psidOwner,
  [in, optional] PSID                 psidGroup,
  [in, optional] PACL                 pDacl,
  [in, optional] PACL                 pSacl
);

Parámetros

[in] handle

Identificador del objeto para el que se va a establecer la información de seguridad.

[in] ObjectType

Miembro de la enumeración SE_OBJECT_TYPE que indica el tipo de objeto identificado por el parámetro handle .

[in] SecurityInfo

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

[in, optional] psidOwner

Puntero a un SID que identifica al propietario del objeto. El SID debe ser uno que se pueda asignar como el SID propietario de un descriptor de seguridad. El parámetro SecurityInfo debe incluir la marca OWNER_SECURITY_INFORMATION. Este parámetro puede ser NULL si no establece el SID de propietario.

[in, optional] psidGroup

Puntero a un SID que identifica el grupo principal del objeto. El parámetro SecurityInfo debe incluir la marca GROUP_SECURITY_INFORMATION. Este parámetro puede ser NULL si no establece el SID del grupo principal.

[in, optional] pDacl

Puntero a la nueva DACL para el objeto . Este parámetro se omite a menos que el valor del parámetro SecurityInfo incluya la marca DACL_SECURITY_INFORMATION . Si el valor del parámetro SecurityInfo incluye la marca DACL_SECURITY_INFORMATION y el valor de este parámetro se establece en NULL, se concede acceso total al objeto a todos los usuarios. Para obtener información sobre las DACL nulas , consulte Creación de una DACL.

[in, optional] pSacl

Puntero al nuevo SACL para el objeto . El parámetro SecurityInfo debe incluir cualquiera de las marcas siguientes: SACL_SECURITY_INFORMATION, LABEL_SECURITY_INFORMATION, ATTRIBUTE_SECURITY_INFORMATION, SCOPE_SECURITY_INFORMATION o BACKUP_SECURITY_INFORMATION. Si establece SACL_SECURITY_INFORMATION o SCOPE_SECURITY_INFORMATION, el autor de la llamada debe tener habilitado el privilegio SE_SECURITY_NAME. Este parámetro puede ser NULL si no establece la SACL.

Valor devuelto

Si la función se realiza correctamente, la función devuelve ERROR_SUCCESS.

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

Comentarios

Si va a establecer la lista de control de acceso discrecional (DACL) o cualquier elemento de la lista de control de acceso del sistema (SACL) de un objeto, el sistema propaga automáticamente las entradas de control de acceso (ACE) heredables a los objetos secundarios existentes, según las reglas de herencia ace.

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

  • Archivos o directorios locales o remotos en un 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 ventana y escritorios
  • Objetos de servicio de directorio

La función SetSecurityInfo no reordena los ACA permitidos o denegados de acceso según el orden preferido. Al propagar ASE heredables a objetos secundarios existentes, SetSecurityInfo coloca las ACE heredadas en orden después de todas las AEC no heredadas en las ACL de los objetos secundarios.

Nota Si el acceso compartido a los elementos secundarios del objeto no está disponible, esta función no propagará las ACE desprotegidas a los elementos secundarios. Por ejemplo, si se abre un directorio con acceso exclusivo, el sistema operativo no propagará las ACE desprotegidas a los subdirectorios o archivos de ese directorio cuando se cambie la seguridad en el directorio.
 
Advertencia Si el identificador proporcionado se abrió con un valor de ACCESS_MASK de MAXIMUM_ALLOWED, la función SetSecurityInfo no propagará las ACE a los elementos secundarios.
 

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

Control de acceso

Funciones básicas de Access Control

GetNamedSecurityInfo

GetSecurityInfo

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

SE_OBJECT_TYPE

SID

SetNamedSecurityInfo