다음을 통해 공유


ADSI를 사용하여 특성 액세스

IADs.GetIADs.GetEx 메서드는 명명된 특성 값을 검색하는 데 사용됩니다. 두 메서드 모두 VARIANT 값을 반환합니다. 이러한 메서드는 스키마를 지원하는 디렉터리에만 사용할 수 있습니다. 스키마 없이 디렉터리의 개체에 액세스할 때 IADsPropertyEntryIADsPropertyValue 인터페이스를 사용하여 특성 값을 조작해야 합니다.

IADs.GetIADs.GetEx 메서드는 서버에서 반환하는 값 수에 따라 VARIANT 배열일 수도 있고 그렇지 않을 수도 있는 VARIANT를 반환합니다. 예를 들어 단일 특성이든 다중 값이든 관계없이 서버에서 값이 하나만 반환되는 경우 메서드는 단일 VARIANT를 반환합니다. 반대로 여러 값이 반환되면 VARIANT 배열이 반환됩니다. VARIANT 배열이 반환되면 VARIANT 구조체의 vt 멤버에는 VT_VARIANT/vbVariantVT_ARRAY/vbArray 플래그가 포함됩니다.

IADs.GetIADs.GetEx 메서드는 IDispatch 인터페이스를 사용하여 COM 개체를 반환할 수도 있습니다. 이 경우 VARIANT 구조체의 vt 멤버에는 VT_DISPATCH/vbObject 플래그가 포함됩니다. COM 개체에 액세스하려면 IDispatch 인터페이스에서 QueryInterface 메서드를 호출하여 원하는 인터페이스를 가져옵니다.

IADs.GetIADs.GetEx 메서드에서 반환된 또 다른 데이터 형식은 이진 데이터입니다. 이 경우 데이터는 연속된 바이트 배열로 제공되며 VARIANT 구조의 vt 멤버에는 VT_UI1/vbByteVT_ARRAY/vbArray 플래그가 포함됩니다.

참고

Microsoft Visual Basic, Scripting Edition은 VARIANTVARIANT 배열만 지원합니다. 이 때문에 VBScript를 사용하여 이진 속성 값을 읽을 수 없습니다.

 

많은 ADSI 인터페이스는 인터페이스별 속성을 정의합니다. 예를 들어 IADsComputer 인터페이스는 Location 속성을 정의합니다. 이러한 인터페이스 정의 속성은 명명된 특성 중 하나와 동일한 데이터를 포함할 수 있지만 속성은 인터페이스가 참조하는 개체 형식과 관련이 있습니다. 자동화를 지원하는 언어에서는 다음 코드 예제와 같이 점 표기법을 사용하여 이러한 인터페이스 정의 속성에 액세스할 수 있습니다.

예제

다음 코드 예제에서는 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를 사용하여 특성에 액세스하는 방법에 대한 자세한 내용은 다음을 참조하세요.