X64系统文件、注册表操作重定向

windows xp开始,X64系统引入了文件重定向、注册表重定向,在X64系统,32位程序对某些位置的注册表、文件操作存在重定向,64位程序对文件、注册表的操作不存在重定向。

X64系统有两个注册表编辑器regedit.exe,regedit命令默认运行X64版本:
C:\Windows\regedit.exe X64版本
C:\Windows\SysWow64\regedit.exe X32版本

访问HKLM/Software,会被重定向至HKLM/Software/Wow6432Node
以下三项不重定向:HKLM/Software/Classes、HKLM/Software/Classes/Appid、HKLM/Software/Classes/HCP

32位程序对%windir%\system32 的操作会被重定向到%windir%\SysWOW64
%SystemRoot%表示Windows安装文件夹,如系统安装在C盘,那么就是C:\Windows,%windir%等同%SystemRoot%。

(1)%windir%\System32,重定向到%windir%\SysWOW64
(2)%windir%\lastgood\system32 %windir%\lastgood\SysWOW64
(3) %windir%\regedit.exe %windir%\SysWOW64\regedit.exe
32位程序如果需要访问真正的c:\windows\system32\,可以访问c:\windows\Sysnative\,Sysnative别名是从Windows Vista开始支持的。

以下子目录不重定向:
%windir%\system32\catroot
%windir%\system32\catroot2
%windir%\system32\driverstore【Windows Server 2008, Windows Vista, Windows Server 2003,Windows XP外的其它系统不重定向】
%windir%\system32\drivers\etc
%windir%\system32\logfiles
%windir%\system32\spool

弹出UAC提示后不重定向,调用64位版本的文件。为了避免这个问题,要么用SysWOW64访问,确保访问的是32为版本的文件,或者使用管理员权限运行32位程序避免UAC提示。