Compartir a través de


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 un cadena terminada en nullque 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 SECURITY_INFORMATION.

[in, optional] psidOwner

Puntero a una estructura 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 propietario SID, 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 de 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 la SACL, este parámetro puede ser NULL.

Valor devuelto

Si la función se ejecuta 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.

Observaciones

Si va a establecer el lista de control de acceso discrecional (DACL) o cualquier elemento de la lista de control de acceso del sistema de (SACL) de un objeto, el sistema propaga automáticamente las entradas de control de acceso heredables (ACE) a objetos secundarios existentes, según las reglas de 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, exclusión mutua y temporizadores de espera
  • Objetos de asignación de archivos
  • Objetos de servicio de directorio
La función SetNamedSecurityInfo no reordena los ACL permitidos o denegados de acceso en función del orden preferido. Al propagar los AEC heredables a objetos secundarios existentes, SetNamedSecurityInfo coloca los AEC heredados en orden después de todos los AEC no heredados 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 se haya desactivado la firma 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 al volumen completa.

Ejemplos

Para obtener un ejemplo que use esta función, vea Modificar las ACL de un objeto o tomar 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 Conventions for Function Prototypes.

Requisitos

Requisito Valor
cliente mínimo admitido Windows XP [aplicaciones de escritorio | Aplicaciones para UWP]
servidor mínimo admitido Windows Server 2003 [aplicaciones de escritorio | Aplicaciones para UWP]
de la plataforma de destino de Windows
encabezado de aclapi.h
biblioteca de Advapi32.lib
DLL de Advapi32.dll

Consulte también

de ACL

control de acceso

funciones básicas de control de acceso

GetNamedSecurityInfo de

GetSecurityInfo

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

SE_OBJECT_TYPE

de SID

setSecurityInfo de