Interfaccia IADsContainer (iads.h)
L'interfaccia IADsContainer consente a un oggetto contenitore ADSI di creare, eliminare e gestire oggetti ADSI contenuti. Gli oggetti contenitore rappresentano alberi gerarchici delle directory, ad esempio in un file system, e per organizzare la gerarchia di directory.
È possibile usare l'interfaccia IADsContainer per enumerare gli oggetti contenuti o gestire il ciclo di vita. Un esempio potrebbe essere quello di spostarsi in modo ricorsivo in un albero di directory. Eseguendo una query sull'interfaccia IADsContainer su un oggetto ADSI, è possibile determinare se l'oggetto include elementi figlio. Se l'interfaccia non è supportata, l'oggetto è una foglia. In caso contrario, si tratta di un contenitore. È possibile continuare questo processo per gli oggetti contenitore appena trovati. Per creare, copiare o eliminare un oggetto, inviare la richiesta all'oggetto contenitore per eseguire l'attività.
Ereditarietà
L'interfaccia IADsContainer eredita dall'interfaccia IDispatch . IADsContainer include anche questi tipi di membri:
Metodi
L'interfaccia IADsContainer include questi metodi.
IADsContainer::CopyHere Il metodo IADsContainer::CopyHere crea una copia dell'oggetto directory specificato in questo contenitore. |
IADsContainer::Create Configura una richiesta per creare un oggetto directory della classe dello schema specificata e un nome specificato nel contenitore. |
IADsContainer::D elete Elimina un oggetto directory specificato da questo contenitore. |
IADsContainer::get__NewEnum Recupera un oggetto enumeratore per il contenitore. |
IADsContainer::GetObject Recupera un'interfaccia per un oggetto directory nel contenitore. |
IADsContainer::MoveHere Sposta un oggetto specificato nel contenitore che implementa questa interfaccia. |
Commenti
Per determinare se un oggetto è un contenitore, utilizzare la proprietà IADsClass.Container dell'oggetto .
Quando si esegue l'associazione a un oggetto contenitore usando il RELATIVO GUID (o SID), è possibile eseguire solo operazioni specifiche sull'oggetto contenitore. Queste operazioni includono l'esame degli attributi dell'oggetto e l'enumerazione degli elementi figlio immediati dell'oggetto. Queste operazioni sono illustrate nell'esempio di codice seguente.
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
Tutte le altre operazioni, ovvero GetObject, Create, Delete, CopyHere e MoveHere , non sono supportate nella rappresentazione GUID del contenitore. Ad esempio, l'ultima riga dell'esempio di codice seguente genererà un errore.
Dim con As IADsContainer
Dim obj As IADs
Set con = GetObject("LDAP://svr01/<GUID=xxxx>")
Set obj = con.GetObject("user", "CN=Jeff Smith")
L'associazione, l'uso di GUID (o SID) è destinato a un sovraccarico ridotto e, pertanto, alle associazioni veloci, che vengono spesso usate per l'introspezione degli oggetti.
Per chiamare questi metodi del contenitore associato al RELATIVO GUID (o SID), riassociare all'oggetto usando il nome distinto.
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")
Per altre informazioni sulla rappresentazione GUID dell'oggetto, vedere IADs.GUID.
Esempio
L'esempio di codice seguente determina se un oggetto ADSI è un contenitore.
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'esempio di codice seguente determina se un oggetto ADSI è un contenitore.
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();
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows Vista |
Server minimo supportato | Windows Server 2008 |
Piattaforma di destinazione | Windows |
Intestazione | iads.h |