讲解SysWOW64文件夹

时间:2021-02-21 18:02:00

本机是win7 64位操作系统,做数据库实例时需要创建Access数据库的ODBC数据源,但是打开ODBC数据源后发现添加里面没有配置access的连接,如下图:

讲解SysWOW64文件夹

还会弹出以下问题框:

讲解SysWOW64文件夹

 

        解决方法:打开目录:“C:\Windows\SysWOW64”,双击该目录下的“odbcad32.exe”文件(以前打开的是C:\Windows\system32目录下的该文件),进去ODBC数据源管理界面后问题就都可以解决了。于是查追根到了操作系统的原理上,下面谈谈SystemSystem32SysWoW64

 

       WoW64 (Windows-on-Windows 64-bit)是一个Windows操作系统的子系统, 能够运行32-bit 应用

程序, 并且在所有的64-bit 版本的windows上都存在。

        WoW64子系统是一个轻量级的compatibility layer, 在所有版本的windows上都拥有同样的接口. 它的主要目的是用来创建32-bit环境, 为了让32位的应用程序可以不经过任何修改就运行在64-bit的系统上, 它提供了必须的接口.

        技术上说, WOW64是由三个DLL实现的:Wow64.dll 是Windows NT kernel的核心接口, 在32位和64位调用之间进行转换, 包括指针和调用栈的操控. Wow64win.dll 为32位应用程序提供合适的入口指针.Wow64cpu.dll 负责将处理器在32位和64位的模式之间转换。

      如果你查看一下在32位操作系统内的\Windows文件夹,你会发现两个子目录:一个名为SYSTEM,还有一个名为SYSTEM32SYSTEM目录是Windows 3.x遗留下来的,用来保持Windows的对一些旧的应用程序的向下兼容性。一般说来,16位的DLL文件(以及其它的支持文件)被存放在\Windows\System文件夹里,32DLL文件和不同支持文件被存放在\Windows\System32文件夹里。

    
32位版本的Windows保持16位和32DLL文件的方式是非常简单的,但是64位版本的Windows保持64位和32DLL文件的方式就不这么简单了。

      
理论上说,微软将要创建一个名为\Windows\System64的文件夹来用其存放64DLL文件,但是取而代之的是,微软创建了一个新的名为SysWOW64的文件夹来存放32位的DLL文件。第一眼看起来,让人感觉这个文件夹应该存放64位应用程序的,但是注意,32位应用程序本来应该存放它们的DLL文件到\Windows\System32文件夹里面。
    
\Windows\System32文件夹在64位版本的Windows内仍然存在。但是微软使用这个文件夹做为64DLL的仓库,而不是32DLL文件的。我不清楚微软使用\Windows\System32文件夹来存放64DLL的原因,但是据了解这么做是为了向下兼容性。