共用方式為


系結至全域編錄

全域編錄是命名空間,其中包含樹系中所有網域的目錄數據。 全域編錄包含每個網域目錄的部分複本。 它包含企業樹系中每個物件的專案,但不包含每個物件的所有屬性。 相反地,它只包含指定以包含在全域編錄中的屬性。

全域編錄會儲存在整個企業的特定伺服器上。 只有域控制器可以做為全域編錄伺服器。 管理員 istrators 會指出指定的域控制器是否使用 Active Directory 月臺和服務管理員來保存全域編錄。

若要使用 ADSI 系結至全域編錄,請使用 “GC:” Moniker。

有兩種方式可以系結至全域編錄,以在樹系中執行搜尋:

  • 系結至企業根物件,以搜尋樹系中的所有網域。
  • 系結至特定物件,以搜尋該物件及其子系。 例如,如果您系結至樹系中網域樹狀目錄中有兩個網域的網域,則可以搜尋這三個網域。 請注意,要系結的物件辨別名稱與用來系結至 “LDAP:” 命名空間的辨別名稱完全相同。 回想一下,“LDAP:” 是單一網域的完整復本,而且 “GC:” 是樹系中所有網域的部分複本。

如同 “LDAP:” Moniker,您可以使用無伺服器系結或系結至特定的全域編錄伺服器。 如果在目前的樹系中搜尋,請使用無伺服器系結。 不過,如果在另一個樹系中搜尋,請指定要系結的功能變數名稱或全域編錄伺服器,如下列範例所示。

使用網域名稱系結:

GC://fabrikam.com

使用伺服器名稱系結:

GC://servername

您也可以繫結至全域編錄中的特定物件。 若要系結至 fabrikam 網域中的銷售物件,請使用下列格式。

GC://fabrikam.com/DC=sales,DC=fabrikam,DC=com

或者,若要系結至伺服器上的銷售物件,請使用下列格式。

GC://servername.fabrikam.com/DC=sales,DC=fabrikam,DC=com

搜尋整個樹系

  1. 系結至全域編錄命名空間的根目錄。
  2. 列舉全域編錄容器。 全域編錄容器包含可用來搜尋整個樹系的單一物件。
  3. 使用容器中的 對象來執行搜尋。 在 C/C++ 中,呼叫 QueryInterface 以取得 物件上的 IDirectorySearch 指標,讓您可以使用 IDirectorySearch 介面來執行搜尋。 在 Visual Basic 中,使用從 ADO 查詢中的 列舉傳回的物件。

若要列舉站台中的全域編錄伺服器,請使用下列篩選字元串,對 configurationNamingContext> 的 “cn=<yoursite,cn>=sites,DN<” 執行 LDAP 子樹搜尋。

(&(objectCategory=nTDSDSA)(options:1.2.840.113556.1.4.803:=1))

此篩選會使用LDAP_MATCHING_RULE_BIT_AND比對規則運算符 (1.2.840.113556.1.4.803) 來尋找 nTDSDSA 對象,這些物件在 options 屬性的位掩碼中設定了低序位。 對應至 Ntdsapi.h 中定義的NTDSDSA_OPT_IS_GC 常數低序位,會 識別全域編錄伺服器的 nTDSDSA 物件。 如需比對規則的詳細資訊,請參閱 搜尋篩選語法

nTDSDSA 物件的父代是伺服器物件,而伺服器物件的 dNSHostName 屬性則是全域編錄伺服器的 DNS 名稱。

您無法直接在搜尋篩選字串中使用 #define 常數,例如 NTDSDSA_OPT_IS_GCLDAP_MATCHING_RULE_BIT_AND 。 不過,您可以使用這些常數做為函式的自變數,例如 swprintf_s 將常數值插入篩選字串中。

全域編錄不代表整個樹系樹狀結構。 例如,您可能預期下列程式代碼範例會列舉樹系中的所有網域,以及每個網域的所有子物件。 事實上,它實際上所做的是列舉樹系中的所有定義域,但列舉定義域對象中沒有任何子系。 這是全域編錄的限制。

Dim oGC As IADs
Dim oDomain As IADs
Dim oChild As IADs

Set oGC = GetObject("GC:")
For Each oDomain In oGC
    ' Print the name of the domain.
    Debug.Print oDomain.Name
    
    ' Enumerate the child objects of the domain.
    For Each oChild In oDomain
        Debug.Print oChild.Name
    Next
Next

若要修正此問題,您必須系結至每個定義域對象,然後列舉每個網域的子物件。 適當的技術會顯示在下列程式代碼範例中。

Dim oGC As IADs
Dim oDomainEnum As IADs
Dim oDomainBind As IADs
Dim oChild As IADs

Set oGC = GetObject("GC:")
For Each oDomainEnum In oGC
    ' Print the name of the domain.
    Debug.Print oDomainEnum.Name
    
    ' Bind to the domain.
    Set oDomainBind = GetObject("LDAP://" + oDomainEnum.Name)
    
    ' Enumerate the child objects of the domain.
    For Each oChild In oDomainBind
        Debug.Print oChild.Name
    Next
Next

如需如何搜尋整個樹系的詳細資訊和程式代碼範例,請參閱 搜尋樹系的範例程序代碼。