共用方式為


使用 GetObject 和 ADsGetObject 系結

GetObjectADsGetObject 函式可用來系結至沒有驗證的目錄服務物件。 存取目錄服務數據時,不需要應用程式提供認證。 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();