Interface IADsContainer (iads.h)

L’interface IADsContainer permet à un objet conteneur ADSI de créer, de supprimer et de gérer des objets ADSI contenus. Les objets conteneur représentent des arborescences de répertoires hiérarchiques, par exemple dans un système de fichiers, et pour organiser la hiérarchie de répertoires.

Vous pouvez utiliser l’interface IADsContainer pour énumérer des objets contenus ou gérer leur cycle de vie. Un exemple serait de naviguer de manière récursive dans une arborescence de répertoires. En interrogeant l’interface IADsContainer sur un objet ADSI, vous pouvez déterminer si l’objet a des enfants. Si l’interface n’est pas prise en charge, l’objet est une feuille. Sinon, il s’agit d’un conteneur. Vous pouvez continuer ce processus pour les objets conteneur récemment trouvés. Pour créer, copier ou supprimer un objet, envoyez la demande à l’objet conteneur pour effectuer la tâche.

Héritage

L’interface IADsContainer hérite de l’interface IDispatch. IADsContainer a également les types de membres suivants :

Méthodes

L’interface IADsContainer possède ces méthodes.

 
IADsContainer ::CopyHere

La méthode IADsContainer ::CopyHere crée une copie de l’objet de répertoire spécifié dans ce conteneur.
IADsContainer ::Create

Configure une demande de création d’un objet de répertoire de la classe de schéma spécifiée et d’un nom donné dans le conteneur.
IADsContainer ::D elete

Supprime un objet de répertoire spécifié de ce conteneur.
IADsContainer ::get__NewEnum

Récupère un objet énumérateur pour le conteneur.
IADsContainer ::GetObject

Récupère une interface pour un objet de répertoire dans le conteneur.
IADsContainer ::MoveHere

Déplace un objet spécifié vers le conteneur qui implémente cette interface.

Remarques

Pour déterminer si un objet est un conteneur, utilisez la propriété IADsClass.Container de l’objet.

Lorsque vous liez à un objet conteneur à l’aide de son GUID (ou SID), vous pouvez uniquement effectuer des opérations spécifiques sur l’objet conteneur. Ces opérations incluent l’examen des attributs de l’objet et l’énumération des enfants immédiats de l’objet. Ces opérations sont illustrées dans l’exemple de code suivant.

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

Toutes les autres opérations, c’est-à-dire GetObject, Create, Delete, CopyHere et MoveHere , ne sont pas prises en charge dans la représentation GUID du conteneur. Par exemple, la dernière ligne de l’exemple de code suivant génère une erreur.

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

La liaison, à l’aide d’un GUID (ou SID), est destinée à une faible surcharge et, par conséquent, à des liaisons rapides, qui sont souvent utilisées pour l’introspection d’objet.

Pour appeler ces méthodes du conteneur lié avec son GUID (ou SID), relisez l’objet à l’aide de son nom unique.

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

Pour plus d’informations sur la représentation guid d’objet, consultez IADs.GUID.

Exemples

L’exemple de code suivant détermine si un objet ADSI est un conteneur.

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

L’exemple de code suivant détermine si un objet ADSI est un conteneur.

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

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista
Serveur minimal pris en charge Windows Server 2008
Plateforme cible Windows
En-tête iads.h

Voir aussi

Création et suppression d’objets

IADs ::get_GUID

IADsClass ::get_Container

IADsNamespaces

IDispatch