系結至架構的指導方針
有兩種方式可以系結至 Active Directory 架構:
- 直接系結至架構容器或 架構容器中的 classSchema 或 attributeSchema 物件。 classSchema 或 attributeSchema 物件包含可存在於 Active Directory 網域 樹系中之每個類別和屬性的完整正式定義。 如需詳細資訊,請參閱 Reading attributeSchema 和 classSchema Objects。
- 系結至抽象架構中的抽象架構或類別或屬性專案。 抽象架構只包含每個類別和屬性的相關數據子集,但數據的格式很容易擷取和使用。 如需詳細資訊,請參閱 抽象架構 和 讀取抽象架構。
若要修改或擴充架構,請直接系結至架構容器。 若要讀取類別和屬性定義,通常更容易從抽象架構讀取。
基於下列原因,從抽象架構讀取比較容易:
- ADSI 提供特殊的系結技術和一組介面來讀取抽象架構。
- 使用抽象架構的 ADSI 介面會以適合用於其他 ADSI 介面的格式傳回數據。 例如,IADsClass 和 IADsProperty 通常會使用 lDAPDisplayName 字串來報告屬性和類別名稱,即使此數據以對象識別碼 (OIDs) 的形式儲存在目錄中。 lDAPDisplayName 格式很方便,因為其他 ADSI 介面會使用它來參考搜尋篩選和其他位置中的類別和屬性。
- 對象類別的抽象架構專案包含從多個 classSchema 物件收集的數據。 例如,對象類別的可能父系、強制屬性和選擇性屬性是類別的超級類別和輔助類別中這些屬性的聯集。 如果您從實際的架構容器讀取,則必須從衍生類別的各種 classSchema 物件收集數據。 如果您從抽象架構讀取,則數據位於一個地方。
您應該直接繫結至架構容器,而不是在下列情況下使用抽象架構:
- 若要取得抽象架構中未公開的特定屬性。 例如, oMSyntax、 attributeSchema、 defaultSecurityDescriptor 和其他屬性不會在抽象架構中公開。
- 若要查詢 attributeSchema 和 classSchema 物件。 若要搜尋符合指定篩選條件的類別或屬性,請系結至架構容器並執行一級搜尋。
- 若要新增或修改屬性或類別。 抽象架構是只讀的;您無法使用它來修改或擴充架構。 請注意,必須在架構主機的域控制器上進行修改。 如需詳細資訊,請參閱 安裝架構延伸模組的必要條件。