注册表重定向


写合规基线规则会遇到注册表匹配不上的问题,这里就涉及到了注册表重定向。

重定向技术😊

重定向技术适用版本:

Windows XP X64、Windows Server 2003 X64及以后的X64版本。

重定向技术产生原因:为了确保32位程序能够顺利运行

为了将32位程序和64位程序分离开,产生了一种模拟器(WOW64,Windows 32 on Windows 64),WOW64 模拟器让我们可以在64位平台上运行32位程序,它在系统层中另外提供了一层,来支持老式的32位程序。

一:重定向-文件重定向

ps: 这种文件重定向对于每个32位应用程序默认打开的,但是也可以通过调用API关闭

文件重定向原因:为了确保32位程序能够顺利运行

windows对32位应用程序和64位应用程序有分开存放机制:

对于64位,文件通常被放在%windir%\system32 和 %ProgramFiles%

————-> C:\Windows\system32 和 C:\program files。

对于32位,文件通常被放在%windir%\syswow64 和 %ProgramFiles(x86)

————-> C:\Windows\syswow64 和 C:\program files (x86)。

system32目录下都是64位的dll,只能支持64位程序使用,32位程序不能使用。而syswow64目录下都是32位的dll,可以支持32位程序使用。

文件重定向产生场景:

32位程序访问%windir%\system32 或者 %ProgramFiles% 时候,会发生文件重定向。

文件重定向具体指向:

%windir%\system32 到 %windir%\syswow64的重定向。

%ProgramFiles% 到 C:\Program Files (x86)

文件重定向具体含义:

32位应用程序去访问%windir%\system32,系统会自动跳转到%windir%\syswow64目录下面,syswow64目录下都是32位程序的dll,才能够让32位程序顺利加载【system32目录下面的64位dll不能让32位程序使用】。

image-20220719173156334

二:重定向-注册表重定向

64位Windows的注册表分为 32 位注册表项和 64 位注册表项,许多 32 位注册表项与其相应的 64 位注册表项同名。
64 位版本的注册表编辑器中,32 位注册表项显示在 HKEY_LOCAL_MACHINE\Software\WOW6432Node 注册表项下。

image-20220719175758828

打开64位注册表【运行->regedit】

打开32位注册表【运行->%systemroot%\syswow64\regedit】

注册表重定向产生原因:防止注册表键冲突

注册表重定向实质:维护两套不同的注册表键【64位和32位】

ps:

注册表反射:【适用版本:windows xp、windows server2003等,从win7和winserver 2008 r2开始WOW64就不使用反射机制了,以前通过反射改的key都改为共享了】 维护两套不同的注册表重定向很多是通过:注册表反射机制完成的,但是不是所有的键值都会受到反射机制影响。

​ 注册表反射是在64 位注册表视图和 32 位注册表视图之间复制某些特定的注册表项和项值。

注册表分类:

1:专门给64位程序访问 【除了32位的都是】

2:专门给32位程序访问 【HKEY_LOCAL_MACHINE\Software\WOW6432Node 路径下的】

注册表重定向具体举例:

应用程序操作注册表的时候32bit方式和64bit方式。运行于64bit系统下的32bit应用程序默认操作32位注册表项(即被重定向到WOW6432Node下的子项);而64bit应用程序才是操作的直观子项。

比如,同在64bit系统下,使用如下代码访问注册表:

​ ::RegOpenKeyEx(HKEY_LOCAL_MACHINE,_T(“Software\Sobey\MPC “), 0,KEY_ALL_ACCESS, &hKey)

​ 如果应用程序为32位子系统,那么实际访问的注册表位置为:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Sobey\MPC;

​ 而如果应用程序为64位子系统,那么实际访问的注册表位置将会是:HKEY_LOCAL_MACHINE\SOFTWARE\Sobey\MPC。

下面这个可以看到注册表具体项是哪个是反射、重定向还是共享,非常有用。

WOW 下的重定向、共享和反射项

image-20220719183751494

参考链接:

64位视图注册表

Windows:32位程序运行在64位系统上注册表会重定向

jiangqin115 - 注册表重定向

mmthr - 32位程序访问64位 system32文件夹时注意事项

Crzayliyang-架构Young,64位Windows系统注册表的 32 位注册表项和64 位注册表项


文章作者: highgerms
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 highgerms !
  目录