使用 GetObject 和 ADsGetObject 系結
GetObject 和 ADsGetObject 函式可用來系結至沒有驗證的目錄服務物件。 存取目錄服務數據時,不需要應用程式提供認證。 ADSI 使用呼叫線程的安全性內容。 不過,如果安全驗證失敗,ADSI 會嘗試使用 Null 使用者名稱和 Null 密碼執行簡單的系結。 如果簡單系結成功,系結的用戶內容會是 Guest。 簡單系結會使用純文本驗證。 因為不會透過網路傳輸任何使用者名稱或密碼,因此這不是安全性問題。
GetObject 函式可用來系結至支援自動化的語言目錄服務物件,例如Visual Basic。 GetObject 函式需要Moniker字串。 在 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();