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 |