使用 otherWellKnownObjects 屬性啟用 Rename-Safe 系結
Container 類別的物件具有 otherWellKnownObjects 屬性,可用來將 GUID 與容器中子對象的辨別名稱 (DN) 產生關聯。 如果移動或重新命名子物件,Active Directory 伺服器會更新該子物件 otherWellKnownObjects 中的 DN 值。 這可讓您使用 WKGUID 系結功能,使用容器的 GUID 和 DN 系結至子物件,而不是子物件的 DN。
otherWellKnownObjects 屬性相當於 wellKnownObjects 屬性,不同之處在於應用程式和服務可以撰寫 otherWellKnownObjects 值,但只有系統可以寫入 wellKnownObjects。
使用 otherWellKnownObjects 屬性與 WKGUID 綁定時,如果需要與特定容器物件進行重新命名安全的綁定,則在以下情況有助益。
如果容器物件包含其他重要物件,或是重要物件可以重新命名或移動,則需要小心處理。
如果容器物件中的每個實例都有重要物件存在。 例如,系統會使用每個 domainDNS 物件的 wellKnownObjects 屬性來儲存 Users 容器的值,而在每一個 domainDNS 物件的實例中都存在一個使用者容器。 這可讓應用程式透過指定 domainDNS 容器的已知 GUID 和 DN,以安全的重新命名方式連接至使用者容器。 應用程式也可以類似地使用容器的 otherWellKnownObjects 屬性。
如果您需要在重要物件上具備重命名安全系結和/或搜尋功能。
新增重新命名安全系結和搜尋功能
- 在容器內建立重要物件時,將值新增至容器物件的 otherWellKnownObjects 屬性中。 值包含代表已知物件的 GUID。 請注意,這不是該物件的 objectGUID 和 distinguishedName。
- 使用 WKGUID 系結功能系結至重要物件或搜尋重要物件。
otherWellKnownObjects 屬性可以有多個值,並包含已設定的容器內已知物件的 GUID/DN 對。 otherWellKnownObjects 屬性具有 DNWithBinary 語法,其中值的格式如下:
B:<char count>:<well known GUID>:<object DN>
在此範例中,“<char count>” 是“<已知 GUID>”中的十六進位數位計數,而這個計數對於otherWellKnownObjects 和 wellKnownObjects都是32(GUID中的十六進位數位數目)。 “<知名 GUID>” 是知名 GUID 的十六進位數位表示法。 “<物件 DN>” 是這個 WKO 值所代表物件的辨別名稱。 伺服器會維護每個 wellKnownObjects 和 otherWellKnownObjects 的 ObjectDN 部分,以確保它包含建立值時所指定物件的當前辨別名稱。
例如, 如果 {df447b5e-aa5b-11d2-8d53-00c04f79ab81} 是 Fabrikam.com 網域中 MyContainer 容器中 MyObject 物件的已知 GUID,otherWellKnownObjects 值會指定 MyObject 的已知 GUID 和 DN:
B:32:df447b5eaa5b11d28d5300c04f79ab81:cn=MyObject,cn=MyContainer,dc=Fabrikam,dc=com
若要系結至此物件,請使用下列 WKGUID 系結字串,指定物件的已知 GUID 和容器的 DN:
LDAP://<WKGUID=df447b5eaa5b11d28d5300c04f79ab81,cn=MyContainer,dc=Fabrikam,dc=com>
系結至此對象之後,您可以使用 ADSI COM 介面來搜尋、讀取、修改或刪除物件。
如需詳細資訊和程式代碼範例,示範如何將物件新增至其他WellKnownObjects 屬性的,請參閱 建立容器物件的範例程序代碼。