Share via


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 的使用者或電腦帳戶對象的辨別名稱。 如果此參數為 NULL,DsServerRegisterSpn 會寫入與呼叫線程相關聯的主要或模擬用戶的帳戶物件。 如果線程是在 LocalSystem 帳戶的安全性內容中執行,函式會寫入本機電腦的帳戶物件。

傳回值

如果函式成功註冊一或多個SPN,它會傳回 ERROR_SUCCESS。 修改會寬鬆地執行,因此新增已經存在的值不會傳回錯誤。

備註

DsServerRegisterSpn 函式所組成的兩個 SPN 具有下列格式:

<ServiceClass>/<host>

在一個SPN中,主計算機是本機計算機的完整 DNS 名稱。 在其他SPN中,主機組件是本機計算機的NetBIOS名稱。

在大部分情況下, DsServerRegisterSpn 呼叫端必須具有網域系統管理員許可權,才能成功修改帳戶物件的 servicePrincipalName 屬性。 此規則的例外狀況是,如果呼叫線程是在 LocalSystem 帳戶下執行,則如果 UserObjectDN 參數為 NULL 或指定本機電腦帳戶的辨別名稱,則允許 DsServerRegisterSpn

注意

ntdsapi.h 標頭會根據 UNICODE 預處理器常數的定義,將 DsServerRegisterSpn 定義為別名,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例

規格需求

需求
最低支援的用戶端 Windows Vista
最低支援的伺服器 Windows Server 2008
目標平台 Windows
標頭 ntdsapi.h
程式庫 Ntdsapi.lib
Dll Ntdsapi.dll

另請參閱

域控制器和復寫管理功能

DsGetSpn

DsWriteAccountSpn