Freigeben über


Zugreifen auf Attribute mit ADSI

Die Methoden IADs.Get und IADs.GetEx werden verwendet, um benannte Attributwerte abzurufen. Beide Methoden geben einen VARIANT-Wert zurück. Diese Methoden sind nur für Verzeichnisse verfügbar, die ein Schema unterstützen. Beim Zugriff auf Objekte in einem Verzeichnis ohne Schema müssen die Schnittstellen IADsPropertyEntry und IADsPropertyValue verwendet werden, um Attributwerte zu bearbeiten.

Die Methoden IADs.Get und IADs.GetEx geben einen VARIANT-Wert zurück, der abhängig von der Anzahl der vom Server zurückgegebenen Werte ein VARIANT-Array sein kann oder nicht. Wenn beispielsweise nur ein Wert vom Server zurückgegeben wird, unabhängig davon, ob es sich um ein einzelnes oder ein mehrwertiges Attribut handelt, gibt die Methode einen einzelnen VARIANT zurück. Wenn dagegen mehrere Werte zurückgegeben werden, wird ein VARIANT-Array zurückgegeben. Wenn ein VARIANT-Array zurückgegeben wird, enthält das vt-Element der VARIANT-Struktur die Flags VT_VARIANT/vbVariant und VT_ARRAY/vbArray .

Die Methoden IADs.Get und IADs.GetEx können auch ein COM-Objekt über die IDispatch-Schnittstelle zurückgeben. In diesem Fall enthält das vt-Member der VARIANT-Struktur das Flag VT_DISPATCH/vbObject . Um auf das COM-Objekt zuzugreifen, rufen Sie die QueryInterface-Methode auf der IDispatch-Schnittstelle auf, um die gewünschte Schnittstelle abzurufen.

Ein weiterer Datentyp, der von den Methoden IADs.Get und IADs.GetEx zurückgegeben wird, sind binäre Daten. In diesem Fall werden die Daten als zusammenhängendes Array von Bytes bereitgestellt, und das vt-Element der VARIANT-Struktur enthält die Flags VT_UI1/vbByte und VT_ARRAY/vbArray .

Hinweis

Microsoft Visual Basic, Scripting Edition unterstützt nur VARIANT- und VARIANT-Arrays . Aus diesem Grund kann VBScript nicht zum Lesen binärer Eigenschaftswerte verwendet werden.

 

Viele ADSI-Schnittstellen definieren schnittstellenspezifische Eigenschaften. Beispielsweise definiert die IADsComputer-Schnittstelle die Location-Eigenschaft . Diese von der Schnittstelle definierten Eigenschaften können Daten enthalten, die mit einem der benannten Attribute identisch sind, aber die Eigenschaften sind spezifisch für den Typ des Objekts, auf den sich die Schnittstelle bezieht. In Sprachen, die die Automatisierung unterstützen, kann auf diese schnittstellendefinierten Eigenschaften mithilfe der Punktnotation zugegriffen werden, wie im folgenden Codebeispiel gezeigt.

Beispiele

Das folgende Codebeispiel zeigt, wie Sie auf die ADsPath-Eigenschaft auf der IADs-Schnittstelle zugreifen.

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

In Nichtautomatisierungssprachen müssen die Eigenschaftenzugriffsmethoden für den Zugriff auf die durch die Schnittstelle definierten Eigenschaften verwendet werden. Beispielsweise wird die IADsComputer::get_Location-Methode verwendet, um die IADsComputer.Location-Eigenschaft abzurufen.

Im folgenden C++-Codebeispiel wird veranschaulicht, wie Sie die Eigenschaftszugriffsmethode in C++ verwenden, um den ADsPath eines Benutzers abzurufen.

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

Weitere Informationen zum Zugriff auf Attribute mit ADSI finden Sie unter: