DsServerRegisterSpnA 函数 (ntdsapi.h)

DsServerRegisterSpn 函数为基于主机的服务组成两个 SPN。 这些名称基于本地计算机的 DNS 和 NetBIOS 名称。 该函数修改指定帐户或与调用线程关联的帐户的 servicePrincipalName 属性。 该函数注册或取消注册 SPN。

基于主机的服务是一个服务实例,它提供与其主计算机标识的服务,这与客户端没有运行服务实例的主机的首选项的可复制服务区分开来。

语法

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

参数

[in] Operation

指定 DsServerRegisterSpn 应执行的操作 。 此参数可以具有以下值之一。

DS_SPN_ADD_SPN_OP

将 SPN 添加到用户或计算机帐户。

DS_SPN_DELETE_SPN_OP

从帐户中删除指定的 SPN。

DS_SPN_REPLACE_SPN_OP

删除当前在用户或计算机帐户上注册的所有 SPN,并将其替换为新的 SPN。

[in] ServiceClass

指向指定服务类的常量以 null 结尾的字符串的指针。 此参数可以是该服务唯一的任何字符串;协议名称(例如 ldap)或 GUID 的字符串形式都将起作用。

[in, optional] UserObjectDN

指向常量以 null 结尾的字符串的指针,该字符串指定要写入 SPN 的用户或计算机帐户对象的可分辨名称。 如果此参数 NULLDsServerRegisterSpn 写入与调用线程关联的主用户或模拟用户的帐户对象。 如果线程在 LocalSystem 帐户的安全上下文中运行,该函数将写入本地计算机的帐户对象。

返回值

如果函数成功注册了一个或多个 SPN,它将返回 ERROR_SUCCESS。 修改以宽松方式执行,以便添加已存在的值不会返回错误。

言论

DsServerRegisterSpn 函数组成的两个 SPN 具有以下格式:

<ServiceClass>/<host>

在一个 SPN 中,主计算机是本地计算机的完全限定 DNS 名称。 在其他 SPN 中,主机组件是本地计算机的 NetBIOS 名称。

在大多数情况下,DsServerRegisterSpn 调用方必须具有域管理员权限才能成功修改帐户对象的 servicePrincipalName 属性。 此规则的例外是,如果调用线程在 LocalSystem 帐户下运行,如果 UserObjectDN 参数为 NULL 或指定本地计算机帐户的可分辨名称,则允许 DsServerRegisterSpn

注意

ntdsapi.h 标头将 DsServerRegisterSpn 定义为基于 UNICODE 预处理器常量定义自动选择此函数的 ANSI 或 Unicode 版本的别名。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的 约定。

要求

要求 价值
最低支持的客户端 Windows Vista
支持的最低服务器 Windows Server 2008
目标平台 窗户
标头 ntdsapi.h
Ntdsapi.lib
DLL Ntdsapi.dll

另请参阅

域控制器和复制管理功能

DsGetSpn

DsWriteAccountSpn