Método IADsContainer::MoveHere (iads.h)
O método IADsContainer::MoveHere move um objeto especificado para o contêiner que implementa essa interface. O método pode ser usado para renomear um objeto .
Sintaxe
HRESULT MoveHere(
[in] BSTR SourceName,
[in] BSTR NewName,
[out] IDispatch **ppObject
);
Parâmetros
[in] SourceName
A cadeia de caracteres Unicode terminada em nulo que especifica o ADsPath do objeto a ser movido.
[in] NewName
A cadeia de caracteres Unicode terminada em nulo que especifica o nome relativo do novo objeto dentro do contêiner. Isso pode ser NULL, caso em que o objeto é movido. Se não for NULL, o objeto será renomeado adequadamente no processo.
[out] ppObject
Ponteiro para um ponteiro para a interface IDispatch no objeto movido.
Retornar valor
Esse método dá suporte a valores retornados padrão, incluindo S_OK, para uma operação bem-sucedida. Para obter mais informações sobre códigos de erro, consulte Códigos de erro ADSI.
Comentários
No Active Directory, você pode mover um objeto dentro do mesmo domínio ou de domínios diferentes na mesma floresta de diretório. Para a movimentação entre domínios, as seguintes restrições se aplicam:
- O domínio de destino deve estar no modo nativo.
- Os objetos a serem movidos devem ser um objeto folha ou um contêiner vazio.
- O NTLM (NT LAN Manager) não pode executar a autenticação; use a autenticação ou delegação Kerberos. Lembre-se de que, se a autenticação Kerberos não for usada, a senha será transmitida em texto não criptografado pela rede. Para evitar isso, use a delegação com autenticação segura.
- Você não pode mover entidades de segurança (por exemplo, usuário, grupo, computador e assim por diante) pertencentes a um grupo global. Quando uma entidade de segurança é movida, um novo SID é criado para o objeto no destino. No entanto, seu SID antigo da origem, armazenado no atributo sIDHistory , é preservado, bem como a senha do objeto.
Set ou = GetObject("LDAP://server1/OU=Support,DC=North,DC=Fabrikam,DC=COM")
ou.MoveHere("LDAP://server2/CN=jeffsmith,OU=Sales,DC=South,DC=Fabrikam,DC=Com", vbNullString)
Um ADsPath sem servidor pode ser usado para a origem ou o destino ou ambos.
O método IADsContainer::MoveHere pode ser usado para renomear um objeto dentro do mesmo contêiner ou para mover um objeto entre contêineres diferentes. Mover um objeto retém o RDN do objeto, enquanto renomear um objeto altera o RDN.
Por exemplo, o exemplo de código a seguir executa a ação renomear.
set cont = GetObject("LDAP://dc=dom,dc=com")
set newobj = cont.MoveHere("LDAP://cn=Jeff Smith,dc=dom,dc=com", "cn=Denise Smith")
O exemplo de código a seguir executa a movimentação.
set cont = GetObject("LDAP://dc=dom,dc=com")
set newobj = cont.MoveHere("LDAP://cn=jeffsmith,ou=sales,dc=dom,dc=com", "cn=jeffsmith")
Em aplicativos do Visual Basic, você pode passar vbNullString como o segundo parâmetro ao mover um objeto de um contêiner para outro.
Set newobj = cont.MoveHere("LDAP://cn=jeffsmith,ou=sale,dc=dom,dc=com", vbNullString)
No entanto, você não pode fazer o mesmo com o VBScript. Isso ocorre porque o VBScript mapeia vbNullString para uma cadeia de caracteres vazia em vez de para uma cadeia de caracteres nula, assim como o Visual Basic. Você deve usar o RDN explicitamente, conforme mostrado no exemplo anterior.
Exemplos
O exemplo de código a seguir mostra como usar esse método para renomear um objeto .
Dim cont As IADsContainer
Dim usr As IADsUser
On Error GoTo Cleanup
' Rename an object.
Set cont = GetObject("LDAP://OU=Sales, DC=Fabrikam,DC=com")
Set usr = cont.MoveHere("LDAP://CN=jeffsmith,OU=Sales, DC=Fabrikam,DC=com", "CN=jayhenningsen")
' Move an object.
cont.MoveHere("LDAP://CN=denisesmith,OU=Engineer,DC=Fabrikam,DC=com", vbNullString)
Cleanup:
If (Err.Number<>0) Then
MsgBox("An error has occurred. " & Err.Number)
End If
Set cont = Nothing
Set usr = Nothing
O exemplo de código a seguir move um objeto de usuário usando o método IADsContainer::MoveHere .
/////////////////////////////////////////////
// First, bind to the destination container.
////////////////////////////////////////////
HRESULT hr;
IADsContainer *pCont=NULL;
CoInitialize(NULL);
hr = ADsGetObject(
L"LDAP://OU=MCS,DC=windows2000,DC=mytest,DC=fabrikam,DC=com",
IID_IADsContainer,
(void**) &pCont );
if ( !SUCCEEDED(hr) )
{
goto Cleanup;
}
//////////////////////////////////////////////////
// Second, move the object to the bound container.
//////////////////////////////////////////////////
IDispatch *pDisp=NULL;
hr = pCont->MoveHere(CComBSTR("LDAP://CN=Jeff Smith,OU=DSys,DC=windows2000,DC=mytest,DC=fabrikam,DC=com"), NULL, &pDisp );
pCont->Release();
if (SUCCEEDED(hr) )
{
// You can perform another operation here, such as updating attributes.
pDisp->Release();
}
Cleanup:
if(pCont)
pCont->Release();
if(pDisp)
pDisp->Release();
CoUninitialize();
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows Vista |
Servidor mínimo com suporte | Windows Server 2008 |
Plataforma de Destino | Windows |
Cabeçalho | iads.h |
DLL | Activeds.dll |