使用 ADSI 存取屬性
IADs.Get 和 IADs.GetEx 方法可用來擷取具名屬性值。 這兩種方法 都會傳回 VARIANT 值。 這些方法僅適用於支援架構的目錄。 在沒有架構的目錄中存取物件時,必須使用 IADsPropertyEntry 和 IADsPropertyValue 介面來操作屬性值。
IADs.Get 和 IADs.GetEx 方法會傳回 VARIANT,視伺服器傳回的值數目而定,可能是 VARIANT 陣列。 例如,如果伺服器只傳回一個值,無論它是單一或多重值屬性,方法都會傳回單 一 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 方法傳回的另一個數據類型是二進位數據。 在此情況下,數據會以連續位元組數位的形式提供,VARIANT 結構的 vt 成員將包含 VT_UI1/vbByte 和 VT_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 存取屬性的詳細資訊,請參閱: