共用方式為


IADsContainer 介面 (iads.h)

IADsContainer 介面可讓 ADSI 容器物件建立、刪除及管理自主 ADSI 物件。 容器物件代表階層式目錄樹狀結構,例如在文件系統中,以及組織目錄階層。

您可以使用 IADsContainer 介面來列舉自主物件或管理其生命週期。 例如,以遞歸方式巡覽目錄樹狀結構。 藉由查詢 ADSI 物件的 IADsContainer 介面,您可以判斷物件是否有任何子系。 如果不支援介面,則對象為分葉。 否則,它是容器。 您可以針對新找到的容器物件繼續此程式。 若要建立、複製或刪除物件,請將要求傳送至容器物件以執行工作。

繼承

IADsContainer 介面繼承自 IDispatch 介面。 IADsContainer 也有下列類型的成員:

方法

IADsContainer 介面具有這些方法。

 
IADsContainer::CopyHere

IADsContainer::CopyHere 方法會在此容器中建立指定目錄對象的複本。
IADsContainer::Create

設定要求,以在容器中建立指定架構類別和指定名稱的目錄物件。
IADsContainer::D elete

從這個容器中刪除指定的目錄物件。
IADsContainer::get__NewEnum

擷取容器的列舉值物件。
IADsContainer::GetObject

擷取容器中目錄物件的介面。
IADsContainer::MoveHere

將指定的物件移至實作這個介面的容器。

備註

若要判斷物件是否為容器,請使用 物件的 IADsClass.Container 屬性。

當您使用容器物件的 GUID (或 SID) 系結至容器物件時,您只能對容器物件執行特定作業。 這些作業包括檢查物件屬性,以及物件的立即子系列舉。 下列程式代碼範例會顯示這些作業。

Dim con As IADsContainer
Dim obj As IADs
Set con = GetObject("LDAP://svr01/<GUID=xxxx>")
con.Filter = Array("user")
For Each item In con
    debug.print item.Name " &  " of " & item.Class
Next

容器的 GUID 表示法不支援所有其他作業,也就是 GetObjectCreateDeleteCopyHereMoveHere 。 例如,下列程式代碼範例的最後一行會導致錯誤。

Dim con As IADsContainer
Dim obj As IADs
Set con = GetObject("LDAP://svr01/<GUID=xxxx>")
Set obj = con.GetObject("user", "CN=Jeff Smith")

系結是使用 GUID (或 SID) ,適用於低負荷,因此,快速系結通常用於物件簡介。

若要呼叫系結至其 GUID (或 SID) 之容器的這些方法,請使用其辨別名稱重新繫結至物件。

Dim conGUID, conDN As IADsContainer
Dim obj As IADs
Set conGUID = GetObject("LDAP://svr/<GUID=xxxx>")
Set conDN=GetObject("LDAP://svr/" & conGUID.Get("distinguishedName"))
Set obj = conDN.GetObject("user", "CN=Jeff Smith")

如需物件 GUID 表示的詳細資訊,請參閱 IADs.GUID

範例

下列程式代碼範例會判斷ADSI物件是否為容器。

Dim obj As IADs
Dim cls As IADsClass
On Error GoTo Cleanup

Set obj = GetObject("WinNT://myComputer,computer")
Set cls = GetObject(obj.Schema)
If (cls.Container = TRUE) Then
    MsgBox "The object is a container."
Else
    MsgBox "The object is a leaf."
End If

Cleanup:
    If (Err.Number<>0) Then
        MsgBox("An error has occurred. " & Err.Number)
    End If
    Set obj = Nothing
    Set cls = Nothing

下列程式代碼範例會判斷ADSI物件是否為容器。

IADs *pADs = NULL;
IADsClass *pCls = NULL;
HRESULT hr = S_OK;
BSTR bstr;

hr = ADsGetObject(L"WinNT://myComputer,computer", IID_IADs, (void**)&pADs);
if(FAILED(hr)){return;}

pADs->get_Schema(&bstr);
hr = ADsGetObject(bstr, IID_IADsClass, (void**)&pCls);
pADs->Release();
SysFreeString(bstr);

if(FAILED(hr)){return;}

VARIANT_BOOL isContainer;
pCls->get_Container(&isContainer);

if(isContainer) 
    printf("Object is a container.\n");
else
    printf("Object is not a container.\n");

pCls->Release();

規格需求

需求
最低支援的用戶端 Windows Vista
最低支援的伺服器 Windows Server 2008
目標平台 Windows
標頭 iads.h

另請參閱

建立和刪除物件

IADs::get_GUID

IADsClass::get_Container

IADsNamespaces

IDispatch