共用方式為


使用 ADSI 存取屬性

IADs.GetIADs.GetEx 方法可用來擷取具名屬性值。 這兩種方法 都會傳回 VARIANT 值。 這些方法僅適用於支援架構的目錄。 在沒有架構的目錄中存取物件時,必須使用 IADsPropertyEntry IADsPropertyValue 介面來操作屬性值。

IADs.Get IADs.GetEx 方法會傳回 VARIANT,視伺服器傳回的值數目而定,可能是 VARIANT 陣列。 例如,如果伺服器只傳回一個值,無論它是單一或多重值屬性,方法都會傳回單 一 VARIANT。 相反地,如果傳回多個值, 則會傳回 VARIANT 陣列。 如果傳回 VARIANT 陣列,VARIANT 結構的 vt 成員包含 VT_VARIANT/vbVariantVT_ARRAY/vbArray 旗標。

IADs.Get IADs.GetEx 方法也可以使用 IDispatch 介面傳回 COM 物件。 在此情況下,VARIANT 結構的 vt 成員包含 VT_DISPATCH/vbObject 旗標。 若要存取 COM 物件,請在 IDispatch 介面上呼叫 QueryInterface 方法,以取得所需的介面。

IADs.Get IADs.GetEx 方法傳回的另一個數據類型是二進位數據。 在此情況下,數據會以連續位元組數位的形式提供,VARIANT 結構的 vt 成員將包含 VT_UI1/vbByteVT_ARRAY/vbArray 旗標。

注意

Microsoft Visual Basic,Scripting Edition 僅支援 VARIANT 和 VARIANT 陣列。 因此,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 存取屬性的詳細資訊,請參閱: