Condividi tramite


Binding con GetObject e ADsGetObject

Le funzioni GetObject e ADsGetObject vengono usate per l'associazione agli oggetti del servizio directory senza autenticazione. L'applicazione non è necessaria per fornire le credenziali durante l'accesso ai dati del servizio directory. ADSI usa il contesto di sicurezza del thread chiamante. Tuttavia, se l'autenticazione sicura ha esito negativo, ADSI tenta di eseguire un'associazione semplice con un nome utente Null e una password Null. Se l'associazione semplice ha esito positivo, il contesto utente per l'associazione è Guest. Un'associazione semplice usa l'autenticazione in testo non crittografato. Poiché non viene trasmesso alcun nome utente o password in rete, questo non è un problema di sicurezza.

La funzione GetObject viene utilizzata per eseguire l'associazione agli oggetti del servizio directory in linguaggi che supportano l'automazione, ad esempio Visual Basic. La funzione GetObject richiede una stringa moniker. In ADSI la stringa di associazione è la stringa del moniker.

Nei linguaggi che non supportano direttamente l'automazione, ad esempio C o C++, ADSI fornisce la funzione ADsGetObject da associare agli oggetti del servizio directory. In alternativa, è possibile usare le funzioni MkParseDisplayName e MkParseDisplayNameEx per ottenere lo stesso risultato di GetObject.

Per un servizio in esecuzione con l'account LocalSystem, il contesto di sicurezza usato da GetObject e ADsGetObject dipende dal computer in cui è in esecuzione il servizio. Se il servizio è in esecuzione come LocalSystem in un controller di dominio, il servizio ha accesso completo a livello di sistema ad Active Directory. Se il servizio non è in esecuzione in un controller di dominio, il servizio dispone dei diritti di accesso e dei privilegi concessi all'account computer per il computer in cui è in esecuzione il servizio; questo è significativamente meno potente rispetto all'accesso a livello di sistema.

Esempi

Nell'esempio di codice di Visual Basic seguente viene illustrato come utilizzare la funzione GetObject per eseguire l'associazione a un oggetto .

Dim myUser as IADs
Set myUser = GetObject("LDAP://CN=jeffsmith,DC=fabrikam,DC=com")

Nell'esempio di codice C++ seguente viene illustrato come usare la funzione ADsGetObject per eseguire l'associazione a un oggetto .

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();