Bagikan melalui


Pengalih Sistem File

Direktori %windir%\System32 dicadangkan untuk aplikasi 64-bit pada Windows 64-bit. Sebagian besar nama file DLL tidak diubah ketika DLL versi 64-bit dibuat, sehingga versi DLL 32-bit disimpan di direktori yang berbeda. WOW64 menyembunyikan perbedaan ini dengan menggunakan pengalih sistem file.

Dalam kebanyakan kasus, setiap kali aplikasi 32-bit mencoba mengakses %windir%\System32, %windir%\lastgood\system32, atau %windir%\regedit.exe, akses dialihkan ke jalur khusus arsitektur.

Catatan

Jalur ini disediakan hanya untuk referensi. Untuk kompatibilitas, aplikasi tidak boleh menggunakan jalur ini secara langsung. Sebaliknya, mereka harus memanggil API yang dijelaskan di bawah ini.

 

Jalur Asli Jalur yang Dialihkan untuk Proses x86 32-bit Jalur yang Dialihkan untuk Proses ARM 32-bit
%windir%\System32 %windir%\SysWOW64 %windir%\SysArm32
%windir%\lastgood\system32 %windir%\lastgood\SysWOW64 %windir%\lastgood\SysArm32
%windir%\regedit.exe %windir%\SysWOW64\regedit.exe %windir%\ SysArm32\regedit.exe

 

Jika akses menyebabkan sistem menampilkan perintah UAC, pengalihan tidak terjadi. Sebaliknya, versi 64-bit dari file yang diminta diluncurkan. Untuk mencegah masalah ini, tentukan direktori SysWOW64 untuk menghindari pengalihan dan memastikan akses ke file versi 32-bit, atau jalankan aplikasi 32-bit dengan hak istimewa administrator sehingga prompt UAC tidak ditampilkan.

Windows Server 2003 dan Windows XP: UAC tidak didukung.

Subdirektori tertentu dikecualikan dari pengalihan. Akses ke subdirektori ini tidak dialihkan ke %windir%\SysWOW64:

%windir%\system32\catroot
%windir%\system32\catroot2
%windir%\system32\driverstore
%windir%\system32\drivers\etc
%windir%\system32\logfiles
%windir%\system32\spool

Windows Server 2008, Windows Vista, Windows Server 2003 dan Windows XP: %windir%\system32\driverstore dialihkan.

Untuk mengambil nama direktori sistem 32-bit, aplikasi 64-bit harus menggunakan fungsi GetSystemWow64Directory2 (Windows 10, versi 1511) atau fungsi GetSystemWow64Directory.

Aplikasi harus menggunakan fungsi SHGetKnownFolderPath untuk menentukan nama direktori %ProgramFiles%.

Windows Server 2003 dan Windows XP: Aplikasi harus menggunakan fungsi SHGetSpecialFolderPath untuk menentukan nama direktori %ProgramFiles%.

Aplikasi dapat mengontrol pengalih sistem file WOW64 menggunakan fungsi Wow64DisableWow64FsRedirection, Wow64EnableWow64FsRedirection, dan Wow64RevertWow64FsRedirection . Menonaktifkan pengalihan sistem file memengaruhi semua operasi file yang dilakukan oleh utas panggilan, sehingga harus dinonaktifkan hanya jika perlu untuk satu panggilan CreateFile dan diaktifkan kembali segera setelah fungsi kembali. Menonaktifkan pengalihan sistem file untuk jangka waktu yang lebih lama dapat mencegah aplikasi 32-bit memuat DLL sistem, menyebabkan aplikasi gagal.

Aplikasi 32-bit dapat mengakses direktori sistem asli dengan mengganti %windir%\Sysnative untuk %windir%\System32. WOW64 mengenali Sysnative sebagai alias khusus yang digunakan untuk menunjukkan bahwa sistem file tidak boleh mengalihkan akses. Mekanisme ini fleksibel dan mudah digunakan, oleh karena itu, ini adalah mekanisme yang disarankan untuk melewati pengalihan sistem file. Perhatikan bahwa aplikasi 64-bit tidak dapat menggunakan alias Sysnative karena merupakan direktori virtual yang bukan direktori nyata.

Windows Server 2003 dan Windows XP: Alias Sysnative ditambahkan dimulai dengan Windows Vista.