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