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 |