DsInheritSecurityIdentityA 函式 (ntdsapi.h)
DsInheritSecurityIdentity 函式會附加 objectSid 和 sidHistorySrcPrincipal 的屬性 至 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,則作業會失敗。
- 將 objectSid 和 sidHistory (如果存在)SrcPrincipal 新增至 DstPrincipalsidHistory。
- 強制稽核事件,並在稽核失敗時失敗作業。
- 在目錄服務記錄檔中輸入事件。 請勿將此與安全性稽核記錄混淆。
注意
ntdsapi.h 標頭會根據 UNICODE 預處理器常數的定義,將 DsInheritSecurityIdentity 定義為自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows Vista |
支援的最低伺服器 | Windows Server 2008 |
目標平臺 | 窗戶 |
標頭 | ntdsapi.h |
連結庫 | Ntdsapi.lib |
DLL | Ntdsapi.dll |