Función DsServerRegisterSpnA (ntdsapi.h)

La función DsServerRegisterSpn compone dos SPN para un servicio basado en host. Los nombres se basan en los nombres DNS y NetBIOS del equipo local. La función modifica el atributo servicePrincipalName de una cuenta especificada o de la cuenta asociada al subproceso que llama. La función registra o anula el registro de los SPN.

Un servicio basado en host es una instancia de servicio que proporciona servicios identificados con su equipo host, como se distingue de un servicio replicable en el que los clientes no tienen preferencia en qué equipo host se ejecuta una instancia de servicio.

Sintaxis

NTDSAPI DWORD DsServerRegisterSpnA(
  [in]           DS_SPN_WRITE_OP Operation,
  [in]           LPCSTR          ServiceClass,
  [in, optional] LPCSTR          UserObjectDN
);

Parámetros

[in] Operation

Especifica qué operación debe realizar DsServerRegisterSpn . Este parámetro puede tener uno de los valores siguientes.

DS_SPN_ADD_SPN_OP

Agrega los SPN a la cuenta de usuario o equipo.

DS_SPN_DELETE_SPN_OP

Elimina los SPN especificados de la cuenta.

DS_SPN_REPLACE_SPN_OP

Quita todos los SPN registrados actualmente en la cuenta de usuario o equipo y los reemplaza por los nuevos SPN.

[in] ServiceClass

Puntero a una cadena terminada en null constante que especifica la clase del servicio. Este parámetro puede ser cualquier cadena única para ese servicio; El nombre del protocolo (por ejemplo, ldap) o el formato de cadena de un GUID funcionará.

[in, optional] UserObjectDN

Puntero a una cadena terminada en null constante que especifica el nombre distintivo de un objeto de cuenta de usuario o equipo en el que se van a escribir los SPN. Si este parámetro es NULL, DsServerRegisterSpn escribe en el objeto de cuenta del usuario principal o suplantado asociado al subproceso que realiza la llamada. Si el subproceso se ejecuta en el contexto de seguridad de la cuenta LocalSystem, la función escribe en el objeto account del equipo local.

Valor devuelto

Si la función registra correctamente uno o varios SPN, devuelve ERROR_SUCCESS. La modificación se realiza de forma permisiva, por lo que agregar un valor que ya existe no devuelve un error.

Comentarios

Los dos SPN compuestos por la función DsServerRegisterSpn tienen el siguiente formato:

<ServiceClass>/<host>

En un SPN, el equipo host es el nombre DNS completo del equipo local. En el otro SPN, el componente host es el nombre NetBIOS del equipo local.

En la mayoría de los casos, el llamador DsServerRegisterSpn debe tener privilegios de administrador de dominio para modificar correctamente el atributo servicePrincipalName de un objeto de cuenta. La excepción a esta regla es si el subproceso que realiza la llamada se ejecuta en la cuenta LocalSystem, se permite DsServerRegisterSpn si el parámetro UserObjectDN es NULL o especifica el nombre distintivo de la cuenta de equipo local.

Nota

El encabezado ntdsapi.h define DsServerRegisterSpn 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 Vista
Servidor mínimo compatible Windows Server 2008
Plataforma de destino Windows
Encabezado ntdsapi.h
Library Ntdsapi.lib
Archivo DLL Ntdsapi.dll

Consulte también

Funciones de administración de replicación y controlador de dominio

DsGetSpn

DsWriteAccountSpn