使用 GetObject 和 ADsGetObject 系結
GetObject 和 ADsGetObject 函式會用來系結至沒有驗證的目錄服務物件。 存取目錄服務數據時,不需要應用程式提供認證。 ADSI 使用呼叫執行緒的安全性內容。 不過,如果安全驗證失敗,ADSI 會嘗試使用 Null 使用者名稱和 Null 密碼執行簡單的系結。 如果簡單綁定成功,綁定的使用者角色即為訪客。 簡單系結會使用純文本驗證。 因為不會透過網路傳輸任何使用者名稱或密碼,因此這不是安全性問題。
GetObject 函式可用來系結至支援自動化的語言目錄服務物件,例如 Visual Basic。 GetObject 函式需要一個識別名稱字串。 在 ADSI 中,系結字串是 Moniker 字串。
在不支援自動化的語言中,例如 C 或 C++,ADSI 會提供 ADsGetObject 函式,以系結至目錄服務物件。 或者,MkParseDisplayName 和 MkParseDisplayNameEx 函式可用來達到與 GetObject相同的結果。
針對在 LocalSystem 帳戶下執行的服務,GetObject 所使用的安全性內容,ADsGetObject 取決於服務執行所在的計算機。 如果服務在域控制器上以 LocalSystem 身分執行,則服務具有 Active Directory 的完整系統層級存取權。 如果服務未在 DC 上執行,則服務具有授與其所在電腦的電腦帳戶的訪問權限和特權;這明顯比系統層級的存取權限弱。
例子
下列 Visual Basic 程式代碼範例示範如何使用 getObject 函式 系結至物件。
Dim myUser as IADs
Set myUser = GetObject("LDAP://CN=jeffsmith,DC=fabrikam,DC=com")
下列C++程式代碼範例示範如何使用 ADsGetObject 函式系結至物件。
IADs *pObject;
HRESULT hr;
// Initialize COM.
CoInitialize(NULL);
hr = ADsGetObject(L"LDAP://CN=jeffsmith,DC=fabrikam,DC=com",
IID_IADs,
(void**) &pObject);
if(SUCCEEDED(hr))
{
// Use the object.
// Release the object.
pObject->Release()
}
// Uninitialize COM.
CoUninitialize();