Accès aux attributs avec ADSI

Les méthodes IADs. obten et IADs. GETEX sont utilisées pour récupérer des valeurs d’attribut nommées. Les deux méthodes retournent une valeur de type Variant . Ces méthodes ne sont disponibles que 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. obten et IADs. GETEX retournent un Variant qui peut être ou non un tableau Variant en fonction du nombre de valeurs retournées par le serveur. Par exemple, si une seule valeur est retournée par le serveur, qu’il s’agisse d’un attribut à valeur unique ou à valeurs multiples, la méthode retourne un Variant unique. À 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. obten 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. obten et IADs. GETEX est données binaires. Dans ce cas, les données sont fournies sous la forme d’un tableau d’octets contigu et le membre VT de la structure Variant contient les indicateurs VT _ UI1/vbByte et VT _ Array/VBArray .

Notes

Microsoft Visual Basic, l’édition de script ne prend en charge que les tableaux variant et variant . Pour cette raison, VBScript ne peut pas être utilisé pour lire les valeurs de propriété 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 qui sont 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 indiqué dans l’exemple de code suivant.

Exemples

L’exemple de code suivant montre comment accéder à la propriété ADsPath de 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 non-Automation, les méthodes d’accès à la propriété doivent être utilisées pour accéder aux propriétés définies par l’interface. Par exemple, la méthode IADsComputer :: obtenir l' _ emplacement 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 à la propriété 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 :