Share via


Accès aux attributs avec ADSI

Les méthodes IADs.Get et IADs.GetEx sont utilisées pour récupérer des valeurs d’attribut nommées. Les deux méthodes retournent une valeur VARIANT . Ces méthodes sont disponibles uniquement pour les répertoires qui prennent en charge un schéma. Lors de l’accès aux objets d’un répertoire sans schéma, les interfaces IADsPropertyEntry et IADsPropertyValue doivent être utilisées pour manipuler des valeurs d’attribut.

Les méthodes IADs.Get et IADs.GetEx retournent un variant qui peut, ou non, être un tableau VARIANT en fonction du nombre de valeurs retournées par le serveur. Par exemple, si une seule valeur est retournée à partir du serveur, qu’il s’agisse d’un attribut unique ou à valeurs multiples, la méthode retourne un seul VARIANT. À l’inverse, si plusieurs valeurs sont retournées, un tableau VARIANT est retourné. Si un tableau VARIANT est retourné, le membre vt de la structure VARIANT contient les indicateurs VT_VARIANT/vbVariant et VT_ARRAY/vbArray .

Les méthodes IADs.Get et IADs.GetEx peuvent également retourner un objet COM à l’aide de l’interface IDispatch . Dans ce cas, le membre vt de la structure VARIANT contient l’indicateur VT_DISPATCH/vbObject . Pour accéder à l’objet COM, appelez la méthode QueryInterface sur l’interface IDispatch pour obtenir l’interface souhaitée.

Un autre type de données retourné par les méthodes IADs.Get et IADs.GetEx est les données binaires. Dans ce cas, les données sont fournies sous la forme d’un tableau contigu d’octets et le membre vt de la structure VARIANT contiendra les indicateurs VT_UI1/vbByte et VT_ARRAY/vbArray .

Notes

Microsoft Visual Basic, Scripting Edition prend uniquement en charge les tableaux VARIANT et VARIANT . Pour cette raison, VBScript ne peut pas être utilisé pour lire les valeurs de propriétés binaires.

 

De nombreuses interfaces ADSI définissent des propriétés spécifiques à l’interface. Par exemple, l’interface IADsComputer définit la propriété Location . Ces propriétés définies par l’interface peuvent contenir des données identiques à l’un des attributs nommés, mais les propriétés sont spécifiques au type d’objet auquel l’interface fait référence. Dans les langages qui prennent en charge l’automatisation, ces propriétés définies par l’interface sont accessibles à l’aide de la notation par points, comme illustré dans l’exemple de code suivant.

Exemples

L’exemple de code suivant montre comment accéder à la propriété ADsPath sur l’interface 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

Dans les langages autres que l’automatisation, les méthodes d’accès aux propriétés doivent être utilisées pour accéder aux propriétés définies par l’interface. Par exemple, la méthode IADsComputer::get_Location est utilisée pour récupérer la propriété IADsComputer.Location .

L’exemple de code C++ suivant montre comment utiliser la méthode d’accès aux propriétés en C++ pour récupérer l’ADsPath d’un utilisateur.

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

Pour plus d’informations sur l’accès aux attributs avec ADSI, consultez :