Compartilhar via


Vinculação com GetObject e ADsGetObject

As funções GetObject e ADsGetObject são usadas para vincular a objetos de serviço de diretório sem autenticação. O aplicativo não é necessário para fornecer credenciais ao acessar dados do serviço de diretório. ADSI usa o contexto de segurança do thread de chamada. No entanto, se a autenticação segura falhar, o ADSI tentará executar uma associação simples com um nome de usuário nulo e senha nula. Se a associação simples for bem-sucedida, o contexto do usuário para a associação será Convidado. Uma associação simples usa autenticação de texto sem formatação. Como nenhum nome de usuário ou senha é transmitido pela rede, isso não é um problema de segurança.

A função GetObject é usada para vincular a objetos de serviço de diretório em linguagens que oferecem suporte à automação, como Visual Basic. A função GetObject requer uma cadeia de caracteres de moniker. No ADSI, a cadeia de caracteres de vinculação é a cadeia de caracteres de moniker.

Em linguagens que não oferecem suporte direto à automação, como C ou C++, o ADSI fornece a função ADsGetObject para vincular a objetos de serviço de diretório. Como alternativa, as funções MkParseDisplayName e MkParseDisplayNameEx podem ser usadas para obter o mesmo resultado que GetObject.

Para um serviço em execução na conta LocalSystem, o contexto de segurança usado por GetObject e ADsGetObject depende do computador no qual o serviço está sendo executado. Se o serviço estiver sendo executado como LocalSystem em um controlador de domínio, o serviço terá acesso total no nível do sistema ao Active Directory. Se o serviço não estiver sendo executado em um DC, o serviço terá os direitos de acesso e privilégios concedidos à conta de computador do computador no qual o serviço está sendo executado; Isso é significativamente menos poderoso do que o acesso no nível do sistema.

Exemplos

O exemplo de código do Visual Basic a seguir mostra como usar a função GetObject para vincular a um objeto.

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

O exemplo de código C++ a seguir mostra como usar a função ADsGetObject para vincular a um objeto.

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