DsInheritSecurityIdentityA 函式 (ntdsapi.h)
DsInheritSecurityIdentity 函式會將 SrcPrincipal 的 objectSid 和 sidHistory 屬性附加至 DstPrincipal 的 sidHistory,然後刪除 SrcPrincipal,全部都在單一交易中。 為了確保此作業不可部分完成, SrcPrincipal 和 DstPrincipal 必須位於相同的網域中, 且 hDS 必須系結至域控制器,該域控制器內的正確許可權。
語法
NTDSAPI DWORD DsInheritSecurityIdentityA(
[in] HANDLE hDS,
[in] DWORD Flags,
[in] LPCSTR SrcPrincipal,
[in] LPCSTR DstPrincipal
);
參數
[in] hDS
包含從 DSBind 或 DSBindWithCred 函式 取得的目錄服務句柄。
[in] Flags
保留供未來使用。 必須為零。
[in] SrcPrincipal
Null 終止字串的指標,指定來源網域中安全性主體的名稱 (使用者或群組) 。 此名稱是網域相對 SAM 名稱。
[in] DstPrincipal
Null 終止字串的指標,指定目的地網域中安全性主體的名稱 (使用者或群組) 。 此網域相對 SAM 名稱會識別 其 sidHistory 屬性將會以 SrcPrincipal 的 SID 更新的主體。
傳回值
傳回系統或 RPC 錯誤碼,包括下列專案。
備註
透過跨越升級和非升級網域的操作系統升級網域應用程式,在樹系內和外部可能會同時有相同邏輯實體的安全性主體。
當所有升級的網域都加入相同的樹系時, DsInheritSecurityIdentity 會消除重複的物件,同時確保其餘物件具有屬於其個別已刪除物件的所有安全性許可權和許可權。
DsInheritSecurityIdentity 實作:
- 確認 SrcPrincipal 和 DstPrincipal 位於相同的網域中。
- 確認網域在系結至伺服器時可寫入。
- 確認網域已啟用稽核。
- 確認呼叫端是否為網域的網域系統管理員成員。
- 確認網域處於原生模式。
- 確認 SrcPrincipal 是否存在,其為安全性主體,並已讀取其 objectSid 和 sidHistory 屬性。
- 確認 DstPrincipal 存在、它是安全性主體,並已讀取稽核和驗證所需的特定屬性。
- 只有在完成時認可整個作業時,才會刪除資料庫中的 SrcPrincipal 。 如果呼叫端沒有刪除許可權,或 SrcPrincipal 有子系,則此作業會失敗。
- 如果 SrcPrincipal 或 DstPrincipal 的 objectSid 是已知的 SID,則作業會失敗。
- 如果 SrcPrincipal) 存在 srcPrincipal,則會將 objectSid 和 sidHistory (新增至 DstPrincipal 的 sidHistory。
- 強制稽核事件,並在稽核失敗時失敗作業。
- 在目錄服務記錄檔中輸入事件。 請勿將此與安全性稽核記錄混淆。
注意
ntdsapi.h 標頭會根據 UNICODE 預處理器常數的定義,將 DsInheritSecurityIdentity 定義為自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows Vista |
最低支援的伺服器 | Windows Server 2008 |
目標平台 | Windows |
標頭 | ntdsapi.h |
程式庫 | Ntdsapi.lib |
Dll | Ntdsapi.dll |