IADsContainer-Schnittstelle (iads.h)
Die IADsContainer-Schnittstelle ermöglicht es einem ADSI-Containerobjekt, enthaltene ADSI-Objekte zu erstellen, zu löschen und zu verwalten. Containerobjekte stellen hierarchische Verzeichnisstrukturen dar, z. B. in einem Dateisystem, und um die Verzeichnishierarchie zu organisieren.
Sie können die IADsContainer-Schnittstelle verwenden, um enthaltene Objekte aufzählen oder ihren Lebenszyklus zu verwalten. Ein Beispiel wäre es, eine Verzeichnisstruktur rekursiv zu navigieren. Durch Abfragen der IADsContainer-Schnittstelle auf einem ADSI-Objekt können Sie bestimmen, 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 diese Arten von Mitgliedern:
Methoden
Die IADsContainer-Schnittstelle weist diese Methoden auf.
IADsContainer::CopyHere Die IADsContainer::CopyHere-Methode erstellt eine Kopie des angegebenen Verzeichnisobjekts in diesem Container. |
IADsContainer::Create Legt eine Anforderung fest, um ein Verzeichnisobjekt der angegebenen Schemaklasse und einen angegebenen Namen im Container zu erstellen. |
IADsContainer::D elete Löscht ein angegebenes Verzeichnisobjekt aus diesem Container. |
IADsContainer::get__NewEnum Ruft ein Aufzählungsobjekt 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 im Containerobjekt ausführen. Diese Vorgänge umfassen die Untersuchung der Objektattribute und aufzählung der unmittelbaren untergeordneten Elemente des Objekts. Diese Vorgänge werden im folgenden Codebeispiel angezeigt.
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, das heißt, 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")
Bindung mit GUID (oder SID) ist für geringen Aufwand vorgesehen und somit schnelle Bindungsbindungen, die häufig für objektintrospection verwendet werden.
Wenn Sie diese Methoden des Containers aufrufen möchten, der mit seiner GUID (oder SID) gebunden ist, wird das Objekt mithilfe des unterschiedenen Namens erneut an das Objekt 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 bestimmt, 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 bestimmt, 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
Unterstützte Mindestversion (Client) | Windows Vista |
Unterstützte Mindestversion (Server) | Windows Server 2008 |
Zielplattform | Windows |
Kopfzeile | iads.h |