Share via


Accesso agli attributi con ADSI

I metodi IADs.Get e IADs.GetEx vengono usati per recuperare i valori di attributo denominati. Entrambi i metodi restituiscono un valore VARIANT. Questi metodi sono disponibili solo per le directory che supportano uno schema. Quando si accede agli oggetti in una directory senza uno schema, è necessario usare le interfacce IADsPropertyEntry e IADsPropertyValue per modificare i valori degli attributi.

I metodi IADs.Get e IADs.GetEx restituiscono un valore VARIANT che può, o meno, essere una matrice VARIANT a seconda del numero di valori restituiti dal server. Ad esempio, se dal server viene restituito un solo valore, indipendentemente dal fatto che si tratti di un singolo attributo o multivalore, il metodo restituisce un singolo valore VARIANT. Viceversa, se vengono restituiti più valori, viene restituita una matrice VARIANT . Se viene restituita una matrice VARIANT, il membro vt della struttura VARIANT contiene i flag VT_VARIANT/vbVariant e VT_ARRAY/vbArray.

I metodi IADs.Get e IADs.GetEx possono restituire anche un oggetto COM usando l'interfaccia IDispatch. In questo caso, il membro vt della struttura VARIANT contiene il flag VT_DISPATCH/vbObject . Per accedere all'oggetto COM, chiamare il metodo QueryInterface sull'interfaccia IDispatch per ottenere l'interfaccia desiderata.

Un altro tipo di dati restituito dai metodi IADs.Get e IADs.GetEx è dati binari. In questo caso, i dati vengono forniti come matrice contigua di byte e il membro vt della struttura VARIANT conterrà i flag VT_UI1/vbByte e VT_ARRAY/vbArray.

Nota

Microsoft Visual Basic, Scripting Edition supporta solo matrici VARIANT e VARIANT. Per questo motivo, VBScript non può essere usato per leggere i valori delle proprietà binarie.

 

Molte interfacce ADSI definiscono proprietà specifiche dell'interfaccia. Ad esempio, l'interfaccia IADsComputer definisce la proprietà Location. Queste proprietà definite dall'interfaccia possono contenere dati identici a uno degli attributi denominati, ma le proprietà sono specifiche del tipo di oggetto a cui fa riferimento l'interfaccia. Nei linguaggi che supportano l'automazione, è possibile accedere a queste proprietà definite dall'interfaccia usando la notazione del punto, come illustrato nell'esempio di codice seguente.

Esempi

Nell'esempio di codice seguente viene illustrato come accedere alla proprietà ADsPath nell'interfaccia IADs.

Dim oUser as IADs
Dim Path as String
 
' Bind to a specific user object.
set oUser = GetObject(
            "LDAP://CN=Jeff Smith,CN=Users,DC=fabrikam,DC=com")
 
' Get property.
Path = MyUser.ADsPath

Nei linguaggi non di automazione, i metodi di accesso alle proprietà devono essere usati per accedere alle proprietà definite dall'interfaccia. Ad esempio, il metodo IADsComputer::get_Location viene usato per recuperare la proprietà IADsComputer.Location .

Nell'esempio di codice C++ seguente viene illustrato come usare il metodo di accesso alle proprietà in C++ per recuperare l'ADsPath di un utente.

HRESULT hr;
IADs *pUser; 
 
// Bind to user object.
hr = ADsGetObject(
     L"LDAP://CN=Jeff Smith,CN=Users,DC=fabrikam,DC=com", 
     IID_IADs, 
     (void**)&pUser);
if(SUCCEEDED(hr)) 
{
    BSTR bstrName;

    // Get property.
    hr = pUser->get_Name(&bstrName);
    if(SUCCEEDED(hr)) 
    {
        wprintf(bstrName);
 
        SysFreeString(bstrName);
    }

    pUser->Release();
}

Per altre informazioni sull'accesso agli attributi con ADSI, vedere: