IADsContainer-Schnittstelle (iads.h)

Die IADsContainer-Schnittstelle ermöglicht es einem ADSI-Containerobjekt, eigenständige ADSI-Objekte zu erstellen, zu löschen und zu verwalten. Containerobjekte stellen hierarchische Verzeichnisstrukturen dar, z. B. in einem Dateisystem, und zum Organisieren der Verzeichnishierarchie.

Sie können die IADsContainer-Schnittstelle verwenden, um entweder enthaltene Objekte aufzulisten oder deren Lebenszyklus zu verwalten. Ein Beispiel wäre das rekursive Navigieren in einer Verzeichnisstruktur. Durch Abfragen der IADsContainer-Schnittstelle für ein ADSI-Objekt können Sie ermitteln, ob das Objekt über untergeordnete Elemente verfügt. Wenn die Schnittstelle nicht unterstützt wird, ist das Objekt ein Blatt. Andernfalls handelt es sich um einen Container. Sie können diesen Prozess für die neu gefundenen Containerobjekte fortsetzen. Um ein Objekt zu erstellen, zu kopieren oder zu löschen, senden Sie die Anforderung an das Containerobjekt, um die Aufgabe auszuführen.

Vererbung

Die IADsContainer-Schnittstelle erbt von der IDispatch-Schnittstelle . IADsContainer verfügt auch über folgende Arten von Membern:

Methoden

Die IADsContainer-Schnittstelle verfügt über diese Methoden.

 
IADsContainer::CopyHere

Die IADsContainer::CopyHere-Methode erstellt eine Kopie des angegebenen Verzeichnisobjekts in diesem Container.
IADsContainer::Create

Richtet eine Anforderung zum Erstellen eines Verzeichnisobjekts der angegebenen Schemaklasse und eines angegebenen Namens im Container ein.
IADsContainer::D elete

Löscht ein angegebenes Verzeichnisobjekt aus diesem Container.
IADsContainer::get__NewEnum

Ruft ein Enumeratorobjekt für den Container ab.
IADsContainer::GetObject

Ruft eine Schnittstelle für ein Verzeichnisobjekt im Container ab.
IADsContainer::MoveHere

Verschiebt ein angegebenes Objekt in den Container, der diese Schnittstelle implementiert.

Hinweise

Um festzustellen, ob ein Objekt ein Container ist, verwenden Sie die IADsClass.Container-Eigenschaft des Objekts.

Wenn Sie eine Bindung an ein Containerobjekt mithilfe seiner GUID (oder SID) herstellen, können Sie nur bestimmte Vorgänge für das Containerobjekt ausführen. Zu diesen Vorgängen gehören die Überprüfung der Objektattribute und die Enumeration der unmittelbaren untergeordneten Elemente des Objekts. Diese Vorgänge werden im folgenden Codebeispiel gezeigt.

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

Alle anderen Vorgänge, d. h. GetObject, Create, Delete, CopyHere und MoveHere , werden in der GUID-Darstellung des Containers nicht unterstützt. Beispielsweise führt die letzte Zeile des folgenden Codebeispiels zu einem Fehler.

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

Die Bindung mithilfe von GUID (oder SID) ist für geringen Mehraufwand und damit für schnelle Bindungen vorgesehen, die häufig für die Objektintrospektion verwendet werden.

Um diese Methoden des Containers aufzurufen, der an seine GUID (oder SID) gebunden ist, werden sie mit seinem distinguished-Namen an das -Objekt neu gebunden.

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")

Weitere Informationen zur Objekt-GUID-Darstellung finden Sie unter IADs.GUID.

Beispiele

Im folgenden Codebeispiel wird ermittelt, ob ein ADSI-Objekt ein Container ist.

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

Im folgenden Codebeispiel wird ermittelt, ob ein ADSI-Objekt ein Container ist.

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();

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista
Unterstützte Mindestversion (Server) Windows Server 2008
Zielplattform Windows
Kopfzeile iads.h

Weitere Informationen

Erstellen und Löschen von Objekten

IADs::get_GUID

IADsClass::get_Container

IADsNamespaces

IDispatch