Compartir a través de


Acceso a atributos con ADSI

Los métodos IADs.Get e IADs.GetEx se usan para recuperar valores de atributo con nombre. Ambos métodos devuelven un valor VARIANT . Estos métodos solo están disponibles para directorios que admiten un esquema. Al acceder a objetos de un directorio sin un esquema, las interfaces IADsPropertyEntry e IADsPropertyValue deben usarse para manipular valores de atributo.

Los métodos IADs.Get e IADs.GetEx devuelven una VARIANT que puede ser, o no, una matriz VARIANT en función del número de valores devueltos por el servidor. Por ejemplo, si solo se devuelve un valor desde el servidor, independientemente de si es un atributo único o multivalor, el método devuelve una única VARIANT. Por el contrario, si se devuelven varios valores, se devuelve una matriz VARIANT . Si se devuelve una matriz VARIANT , el miembro vt de la estructura VARIANT contiene las marcas VT_VARIANT/vbVariant y VT_ARRAY/vbArray .

Los métodos IADs.Get e IADs.GetEx también pueden devolver un objeto COM mediante la interfaz IDispatch . En este caso, el miembro vt de la estructura VARIANT contiene la marca VT_DISPATCH/vbObject . Para acceder al objeto COM, llame al método QueryInterface en la interfaz IDispatch para obtener la interfaz deseada.

Otro tipo de datos devuelto por los métodos IADs.Get e IADs.GetEx es datos binarios . En este caso, los datos se proporcionan como una matriz contigua de bytes y el miembro vt de la estructura VARIANT contendrá las marcas VT_UI1/vbByte y VT_ARRAY/vbArray .

Nota

Microsoft Visual Basic, Scripting Edition solo admite matrices VARIANT y VARIANT . Debido a esto, VBScript no se puede usar para leer valores de propiedad binaria.

 

Muchas interfaces ADSI definen propiedades específicas de la interfaz. Por ejemplo, la interfaz IADsComputer define la propiedad Location . Estas propiedades definidas por la interfaz pueden contener datos idénticos a uno de los atributos con nombre, pero las propiedades son específicas del tipo de objeto al que hace referencia la interfaz. En los lenguajes que admiten la automatización, se puede acceder a estas propiedades definidas por la interfaz mediante la notación de puntos, como se muestra en el ejemplo de código siguiente.

Ejemplos

En el ejemplo de código siguiente se muestra cómo obtener acceso a la propiedad ADsPath en la interfaz de los IAD.

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

En lenguajes que no son de automatización, los métodos de acceso a propiedades deben usarse para acceder a las propiedades definidas por la interfaz. Por ejemplo, el método IADsComputer::get_Location se usa para recuperar la propiedad IADsComputer.Location .

En el siguiente ejemplo de código de C++ se muestra cómo usar el método de acceso a propiedades en C++ para recuperar ADsPath de un usuario.

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

Para obtener más información sobre el acceso a atributos con ADSI, consulte: