次の方法で共有


ADSI を使用した属性へのアクセス

IADs.Get メソッドと IADs.GetEx メソッドは、名前付き属性値を取得するために使用されます。 どちらのメソッドも VARIANT 値を返します。 これらのメソッドは、スキーマをサポートするディレクトリでのみ使用できます。 スキーマのないディレクトリ内のオブジェクトにアクセスする場合は、IADsPropertyEntry インターフェイスと IADsPropertyValue インターフェイスを使用して属性値を操作する必要があります。

IADs.Get メソッドと IADs.GetEx メソッドは、サーバーによって返される値の数に応じて VARIANT 配列である場合と返されない場合がある VARIANT を返します。 たとえば、サーバーから返される値が 1 つだけの場合、単一または複数値の属性に関係なく、メソッドは 1 つの VARIANT を返します。 逆に、複数の値が返された場合は、 VARIANT 配列が返されます。 VARIANT 配列が返された場合、VARIANT 構造体の vt メンバーには、VT_VARIANT/vbVariant フラグと VT_ARRAY/vbArray フラグが含まれます

IADs.Get メソッドと IADs.GetEx メソッドは、IDispatch インターフェイスを使用して COM オブジェクトを返すこともできます。 この場合、VARIANT 構造体の vt メンバーには、VT_DISPATCH/vbObject フラグが含まれています。 COM オブジェクトにアクセスするには、IDispatch インターフェイスで QueryInterface メソッドを呼び出して、目的のインターフェイスを取得します。

IADs.Get メソッドと IADs.GetEx メソッドによって返されるもう 1 つのデータ型はバイナリ データです。 この場合、データは連続したバイト配列として提供され、VARIANT 構造体の vt メンバーには VT_UI1/vbByte フラグと VT_ARRAY/vbArray フラグが含まれます

Note

Microsoft Visual Basic Scripting Edition では、VARIANT 配列と VARIANT 配列のみがサポートされます。 このため、VBScript を使用してバイナリ プロパティ値を読み取ることはできません。

 

多くの ADSI インターフェイスでは、インターフェイス固有のプロパティが定義されています。 たとえば、IADsComputer インターフェイスは Location プロパティを定義します。 これらのインターフェイス定義プロパティには、名前付き属性の 1 つと同じデータが含まれる場合がありますが、プロパティはインターフェイスが参照するオブジェクトの型に固有です。 自動化をサポートする言語では、次のコード例に示すように、これらのインターフェイス定義プロパティにドット表記を使用してアクセスできます。

次のコード例は、IADs インターフェイスの ADsPath プロパティにアクセスする方法を示しています。

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

オートメーション以外の言語では、インターフェイスで定義されたプロパティにアクセスするには、プロパティ アクセス メソッドを使用する必要があります。 たとえば、IADsComputer::get_Location メソッドは、IADsComputer.Location プロパティを取得するために使用されます。

次の C++ コード例は、C++ のプロパティ アクセス メソッドを使用してユーザーの ADsPath を取得する方法を示しています。

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

ADSI を使用した属性へのアクセスの詳細については、以下を参照してください。