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