Bagikan melalui


Registry Redirector

Pengalih registri mengisolasi aplikasi 32-bit dan 64-bit dengan memberikan tampilan logis terpisah dari bagian tertentu dari registri pada WOW64. Pengalih registri mencegat panggilan registri 32-bit dan 64-bit ke tampilan registri logis masing-masing dan memetakannya ke lokasi registri fisik yang sesuai. Proses pengalihan transparan terhadap aplikasi. Oleh karena itu, aplikasi 32-bit dapat mengakses data registri seolah-olah berjalan pada Windows 32-bit bahkan jika data disimpan di lokasi yang berbeda pada Windows 64-bit.

Windows 10 di ARM: Selain tampilan logis 32-bit untuk aplikasi x86, Windows 10 pada ARM menyertakan tampilan logis terpisah untuk aplikasi ARM 32-bit.

Subset kunci di bawah jalur registri yang dialihkan dibagikan. Panggilan registri 32-bit ke kunci bersama tidak dialihkan. Sebaliknya, satu salinan fisik kunci dipetakan ke dalam setiap tampilan logis registri. Untuk daftar kunci yang dialihkan dan kunci bersama, lihat Kunci Registri yang Terpengaruh oleh WOW64.

Windows Server 2008, Windows Vista, Windows Server 2003 dan Windows XP: Untuk mengaktifkan interoperabilitas aplikasi melalui COM dan mekanisme lainnya, subset kunci registri yang dialihkan juga tercermin. Proses refleksi registri menyalin kunci registri dan nilai antara dua tampilan registri agar tetap sinkron. Refleksi registri dihapus dimulai dengan Windows 7 dan Windows Server 2008 R2. Untuk informasi selengkapnya, lihat Registry Reflection.

Skenario berikut mengilustrasikan penggunaan tampilan logis ini:

  • Aplikasi x86 32-bit memeriksa keberadaan kunci registri berikut: HKEY_LOCAL_MACHINE\Software\Hello. Jika kunci tidak ada, aplikasi membuatnya dengan nilai default "Hello 32-bit x86 world"; jika tidak, ia membaca dan menampilkan nilai .
  • Aplikasi yang sama dimodifikasi untuk menulis "Hello 64-bit world" alih-alih "Hello 32-bit x86 world" dan dikompilasi ulang sebagai aplikasi x64 atau ARM64 64-bit.
  • Windows 10 di ARM: Aplikasi yang sama dimodifikasi untuk menulis "Halo dunia ARM 32-bit" dan dikompilasi ulang sebagai aplikasi ARM 32-bit.
  • Ketika aplikasi x86 32-bit dijalankan pada Windows 64-bit, aplikasi menampilkan "Halo dunia x86 32-bit". Ketika aplikasi 64-bit dijalankan, aplikasi menampilkan "Halo dunia 64-bit". Windows 10 di ARM: Ketika aplikasi ARM 32-bit dijalankan pada Windows ARM64 64-bit, aplikasi ini menampilkan "Halo dunia ARM 32-bit". Semua aplikasi memanggil fungsi registri yang sama dengan handel yang telah ditentukan sebelumnya dan nama kunci yang sama; perbedaannya adalah bahwa setiap aplikasi beroperasi pada tampilan registri logisnya, dan setiap tampilan dipetakan ke lokasi fisik registri yang terpisah, yang menjaga semua versi string tetap utuh.

Kunci yang dialihkan dipetakan ke lokasi fisik di bawah Wow6432Node. Misalnya, HKEY_LOCAL_MACHINE\Software dialihkan ke HKEY_LOCAL_MACHINE\Software\Wow6432Node. Namun, lokasi fisik kunci yang dialihkan harus dianggap dicadangkan oleh sistem. Aplikasi tidak boleh mengakses lokasi fisik kunci secara langsung, karena lokasi ini dapat berubah. Untuk informasi selengkapnya, lihat Mengakses Tampilan Registri Alternatif.

Windows 10 pada ARM: Kunci ARM 32-bit yang dialihkan dipetakan ke lokasi fisik di bawah WowAA32Node.

Untuk membantu aplikasi 32-bit yang menulis REG_SZ atau REG_EXPAND_SZ data yang berisi %ProgramFiles% atau %commonprogramfiles% ke registri, WOW64 mencegat operasi tulis ini dan menggantinya dengan "%ProgramFiles(x86)%" dan "%commonprogramfiles(x86)%". Misalnya, jika direktori File Program ada di drive C, maka "%ProgramFiles(x86)%" meluas ke "C:\Program Files (x86)". Penggantian hanya terjadi jika kondisi berikut terpenuhi:

  • String harus dimulai dengan %ProgramFiles% atau %commonprogramfiles%. Jika string dimulai dengan spasi atau karakter apa pun selain %, string tidak diganti.
  • Kasus %ProgramFiles% atau %commonprogramfiles% harus persis seperti yang ditunjukkan karena perbandingan string peka huruf besar/kecil. Misalnya, jika string dimulai dengan %CommonProgramFiles% alih-alih %commonprogramfiles%, string tidak diganti.
  • String tidak boleh melebihi MAX_PATH*2+15 karakter. Jika melebihi panjang ini, maka tidak diganti.
  • Kunci tidak dapat dibuka dengan KEY_WOW64_64KEY. Bendera ini menentukan bahwa operasi pada kunci harus dilakukan pada tampilan registri 64-bit, sehingga tidak diganti. Untuk informasi selengkapnya, lihat Mengakses Tampilan Registri Alternatif.

Windows Server 2008, Windows Vista, Windows Server 2003 dan Windows XP: Bendera KEY_WOW_64_64KEY tidak memengaruhi apakah kunci diganti. Bendera ini memengaruhi penggantian yang dimulai dengan Windows 7 dan Windows Server 2008 R2.

Selain itu, kunci REG_SZ atau REG_EXPAND_SZ yang berisi system32 diganti dengan syswow64. String harus dimulai dengan jalur yang menunjuk ke atau di bawah %windir%\system32. Perbandingan string tidak peka huruf besar/kecil. Variabel lingkungan diperluas sebelum mencocokkan jalur, sehingga semua jalur berikut diganti: %windir%\system32, %SystemRoot%\system32, dan C:\windows\system32. Patch ini hanya diterapkan ke kunci yang tercermin sebelum Windows 7.

Untuk informasi selengkapnya, lihat topik berikut: