Función SetNamedSecurityInfoA (aclapi.h)

La función SetNamedSecurityInfo 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 nombre.

Sintaxis

DWORD SetNamedSecurityInfoA(
  [in]           LPSTR                pObjectName,
  [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] pObjectName

Puntero a una cadena terminada en null que especifica el nombre del objeto para el que se va a establecer la información de seguridad. Puede ser el nombre de un archivo o directorio local o remoto en un sistema de archivos NTFS, recurso compartido de red, clave del Registro, semáforo, evento, exclusión mutua, asignación de archivos o temporizador de espera.

Para obtener descripciones de los formatos de cadena de los distintos tipos de objeto, vea SE_OBJECT_TYPE.

[in] ObjectType

Valor de la enumeración SE_OBJECT_TYPE que indica el tipo de objeto denominado por el parámetro pObjectName .

[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 una estructura de SID que identifica al propietario del objeto. Si el autor de la llamada no tiene la constante SeRestorePrivilege (consulte Constantes de privilegios), este SID debe estar contenido en el token del autor de la llamada y debe tener habilitado el permiso SE_GROUP_OWNER . El parámetro SecurityInfo debe incluir la marca OWNER_SECURITY_INFORMATION. Para establecer el propietario, el autor de la llamada debe tener WRITE_OWNER acceso al objeto o tener habilitado el privilegio SE_TAKE_OWNERSHIP_NAME. Si no establece el SID de propietario, este parámetro puede ser NULL.

[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. Si no establece el SID del grupo principal, este parámetro puede ser NULL.

[in, optional] pDacl

Puntero a la nueva DACL para el objeto . El parámetro SecurityInfo debe incluir la marca DACL_SECURITY_INFORMATION. El autor de la llamada debe tener WRITE_DAC acceso al objeto o ser el propietario del objeto. Si no establece la DACL, este parámetro puede ser NULL.

[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. Si no establece sacl, este parámetro puede ser NULL.

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 heredables (ACE) a los objetos secundarios existentes, según las reglas de herencia.

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

  • Archivos o directorios locales o remotos en un NTFS
  • 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
  • Objetos de asignación de archivos
  • Objetos de servicio de directorio
La función SetNamedSecurityInfo no reordena las ACE permitidas o denegadas de acceso según el orden preferido. Al propagar ASE heredables a objetos secundarios existentes, SetNamedSecurityInfo coloca las ACE heredadas en orden después de todas las ACL no heredadas en las DACL de los objetos secundarios.

Esta función transfiere información en texto no cifrado. La información transferida por esta función se firma a menos que la firma se haya desactivado para el sistema, pero no se realiza ningún cifrado.

Al actualizar los derechos de acceso de una carpeta indicada por una ruta de acceso UNC, por ejemplo \Test\TestFolder, se quita la ACE heredada original y no se incluye la ruta de acceso completa del volumen.

Ejemplos

Para obtener un ejemplo que usa esta función, vea Modificación de las ACL de un objeto o toma de propiedad de objeto.

Nota

El encabezado aclapi.h define SetNamedSecurityInfo como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Convenciones para prototipos de función.

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

SetSecurityInfo