Bagikan melalui


IADsContainer::Metode MoveHere (iads.h)

Metode IADsContainer::MoveHere memindahkan objek tertentu ke kontainer yang mengimplementasikan antarmuka ini. Metode ini dapat digunakan untuk mengganti nama objek.

Sintaks

HRESULT MoveHere(
  [in]  BSTR      SourceName,
  [in]  BSTR      NewName,
  [out] IDispatch **ppObject
);

Parameter

[in] SourceName

String Unicode null-terminated yang menentukan ADsPath objek yang akan dipindahkan.

[in] NewName

String Unicode yang dihentikan null yang menentukan nama relatif objek baru dalam kontainer. Ini bisa NULL, dalam hal ini objek dipindahkan. Jika bukan NULL, objek diganti namanya sesuai dalam proses.

[out] ppObject

Penunjuk ke penunjuk ke antarmuka IDispatch pada objek yang dipindahkan.

Nilai kembali

Metode ini mendukung nilai pengembalian standar, termasuk S_OK, untuk operasi yang berhasil. Untuk informasi selengkapnya tentang kode kesalahan, lihat Kode Kesalahan ADSI.

Keterangan

Di Direktori Aktif, Anda dapat memindahkan objek dalam domain yang sama atau dari domain yang berbeda di forest direktori yang sama. Untuk pemindahan lintas domain, pembatasan berikut berlaku:

  • Domain tujuan harus dalam mode asli.
  • Objek yang akan dipindahkan harus berupa objek daun atau kontainer kosong.
  • NT LAN Manager (NTLM) tidak dapat melakukan autentikasi; gunakan autentikasi atau delegasi Kerberos. Ketahuilah bahwa jika autentikasi Kerberos tidak digunakan, kata sandi dikirimkan dalam teks biasa melalui jaringan. Untuk menghindari hal ini, gunakan delegasi dengan autentikasi aman.
  • Anda tidak dapat memindahkan prinsip keamanan (misalnya, pengguna, grup, komputer, dan sebagainya) milik grup global. Saat perwakilan keamanan dipindahkan, SID baru dibuat untuk objek di tujuan. Namun, SID lamanya dari sumber, disimpan dalam atribut sIDHistory , dipertahankan, serta kata sandi objek.
Catatan Gunakan utilitas Movetree.exe untuk memindahkan subtree di antara domain yang berbeda. Untuk memindahkan objek dari domain sumber ke domain tujuan menggunakan alat baris perintah Movetree, Anda harus tersambung ke pengendali domain yang memegang peran master RID domain sumber. Jika master RID tidak tersedia, maka objek tidak dapat dipindahkan ke domain lain. Jika Anda mencoba memindahkan objek dari satu domain ke domain lain menggunakan alat Movetree.exe dan Anda menentukan pengendali domain sumber yang bukan master RID, hasil pesan kesalahan "Movetree gagal" nonspesifikasi.
 
Catatan Saat menggunakan fungsi ADsOpenObject untuk mengikat objek ADSI, Anda harus menggunakan bendera ADS_USE_DELEGATIONADS_AUTHENTICATION_ENUM dalam parameter dwReserved fungsi ini untuk membuat pemindahan lintas domain dengan IADsContainer::MoveHere. Fungsi ADsOpenObject setara dengan metode IADsOpenDSObject::OpenDsObject . Demikian juga, menggunakan metode OpenDsObject untuk mengikat objek ADSI, parameter InReserved dari metode ini harus berisi bendera ADS_USE_DELEGATIONADS_AUTHENTICATION_ENUM untuk membuat perpindahan lintas domain dengan IADsContainer::MoveHere.
 
Contoh kode berikut memindahkan pengguna, "jeffsmith" dari domain "South.Fabrikam.Com" ke domain "North.Fabrikam.Com". Pertama, ia mendapatkan pointer IADsContainer ke kontainer tujuan, lalu panggilan MoveHere menentukan jalur objek yang akan dipindahkan.
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)

ADsPath tanpa server dapat digunakan untuk sumber atau tujuan atau keduanya.

Metode IADsContainer::MoveHere dapat digunakan untuk mengganti nama objek dalam kontainer yang sama atau untuk memindahkan objek di antara kontainer yang berbeda. Memindahkan objek mempertahankan objek RDN, sedangkan mengganti nama objek mengubah RDN.

Misalnya, contoh kode berikut melakukan tindakan ganti nama.

set cont = GetObject("LDAP://dc=dom,dc=com")
set newobj = cont.MoveHere("LDAP://cn=Jeff Smith,dc=dom,dc=com", "cn=Denise Smith")

Contoh kode berikut melakukan pemindahan.

set cont = GetObject("LDAP://dc=dom,dc=com")
set newobj = cont.MoveHere("LDAP://cn=jeffsmith,ou=sales,dc=dom,dc=com", "cn=jeffsmith")

Dalam aplikasi Visual Basic, Anda dapat meneruskan vbNullString sebagai parameter kedua saat memindahkan objek dari satu kontainer ke kontainer lainnya.

Set newobj =  cont.MoveHere("LDAP://cn=jeffsmith,ou=sale,dc=dom,dc=com", vbNullString)

Namun, Anda tidak dapat melakukan hal yang sama dengan VBScript. Ini karena VBScript memetakan vbNullString ke string kosong alih-alih ke string null, seperti halnya Visual Basic. Anda harus menggunakan RDN secara eksplisit, seperti yang ditunjukkan pada contoh sebelumnya.

Catatan Penyedia WinNT mendukung IADsContainer::MoveHere, tetapi hanya untuk mengganti nama pengguna & grup dalam domain.
 

Contoh

Contoh kode berikut menunjukkan cara menggunakan metode ini untuk mengganti nama objek.

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

Contoh kode berikut memindahkan objek pengguna menggunakan metode 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();

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Vista
Server minimum yang didukung Windows Server 2008
Target Platform Windows
Header iads.h
DLL Activeds.dll

Lihat juga

Kode Kesalahan ADSI

ADS_AUTHENTICATION_ENUM

ADsOpenObject

IADsContainer

IADsContainer::CopyHere

IADsOpenDSObject::OpenDsObject

IDispatch