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 |