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 表示形式不支持所有其他操作,即 GetObject、 Create、 Delete、 CopyHere 和 MoveHere 。 例如,以下代码示例的最后一行将导致错误。
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 |