DsServerRegisterSpn 函式會為主機型服務撰寫兩個 SPN。 這些名稱是以本機計算機的 DNS 和 NetBIOS 名稱為基礎。 函式會修改指定帳戶或與呼叫線程相關聯之帳戶的 servicePrincipalName 屬性。 函式會註冊或取消註冊 SPN。
主機型服務是一種服務實例,可提供與其主計算機識別的服務,與客戶端沒有服務實例執行所在主計算機的喜好設定的可複製服務區別。
語法
NTDSAPI DWORD DsServerRegisterSpnW(
[in] DS_SPN_WRITE_OP Operation,
[in] LPCWSTR ServiceClass,
[in, optional] LPCWSTR 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 帳戶的安全性內容中執行,函式會寫入本機計算機的 account 物件。
傳回值
如果函式成功註冊一或多個 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 |
| 目標平臺 | 窗戶 |
| 標頭 | ntdsapi.h |
| 連結庫 | Ntdsapi.lib |
| DLL | Ntdsapi.dll |