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