Windows 32 64 位系统存放Dll

有时候人们怀疑一个系统的底层结构可否保证这个系统在被使用时达到安全而高效,64位版本的Windows在这方面就比较完美。Windows XPWindows Server 2003都是运行64位硬件的64位版本操做系统。64Windows操做系统运行64位代码,同时经过使用WoW64(Windows on Windows 64)也能运行32位代码。
       
你看,这并非什么大问题,毕竟,32位版本的不一样Windows操做系统都用来同时运行32位和16位代码。(技术上说,并非同时运行,相关解释在之后的技巧中会展现给你们)
       32
位版本的Windows在如何容许32为和16位代码并肩运行方面有着很复杂的机制。然而,这个系统被设计成不管你是系统管理员仍是临时用户,你都不须要知道这些机制如何运行。
可是64位版本的Windows就不一样了。从一个用户的立场上看,64位应用程序和32位应用程序简单地同时运行,没有什么特殊的。可是对于一个管理员(和帮助桌面用户的人员)来讲,这其中就有很大不一样了:32位代码与64位代码相隔离。这个隔离是如此重要以致于64位版本的Windows有两个注册表,一个是针对64位,一个是针对32位。
尽管64位版本的Windows XPWindows Server 2003看起来在操做时候和它们32位的版本几乎一样的,可是在表象之下实际上是有很大不一样的。若是你在64位版本的Windows下按照32位版本同样来执行某些程序,你可能引发一些麻烦。
DLL
存放到何处?
64
位应用程序的第一条规则是:你绝对不能把32位和64位代码混和在同一个应用程序内。若是你有一个64位应用程序,全部与这个应用程序相关的东西,包括DLL文件,必须是64位的。这就有一个有趣的挑战,由于有时候不少应用程序都依靠一个共同的DLL文件。幸运的是,Windows保持32位的DLL文件和64位的DLL文件处于隔离状态。
若是你查看一下在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的缘由,可是我据说这么作是为了向下兼容性。
那么是否是全部32位应用程序该存放它们的DLL文件到/Windows/System32文件夹呢?这又让事情变得混乱。
如我以前所说起的,32位代码不能默认在64位版本的Windows内运行。为了运行32位的应用程序,Windows使用WOW64 emulator,来让这些应用程序还认为它们在32位版本的Windows内运行。
当你安装一个32位的应用程序,安装向导经过WOW64 emulato运行。32位和64位代码并不混和。一旦一个应用程序(包括一个安装向导)WOW64 emulator开始运行,它必须接着在WOW64内继续运行。这意味着当你安装一个应用程序,安装向导并不知道这个程序被安装到64位版本的Windows内,而且和它运行在32位操做系统同样把DLL文件写到/Windows/System32文件夹里面。
固然,WOW64知道安装向导经过emulator来运行的32位应用程序。同时也知道6432位代码不能混合在一块儿。因此,WOW64 emulator /Windows/SysWOW64建立一个别名。这意味着任什么时候候32位应用程序要写入到/Windows/System32文件夹或者从/Windows/SysWOW64文件夹读取,WOW64 emulator都能使其改道到/Windows/SysWOW64文件夹。
全部这些都意味着若是你须要手动操做/Windows/System32文件夹内的内容,你可能要很是的麻烦。我最近了解到一个管理员须要安装一些小的支持脚本到一个已经安装的应用程序,这个脚本的指导上说明这些脚本须要被存放到/Windows/System32文件夹。固然这些脚本的说明假定这个应用程序是在32位操做系统上运行的。
这些脚本没有引发系统崩溃。然而Windows给人幻想永远不用进行更新。当管理员运行应用程序,它将被改道到/Windows/SysWOW64文件夹。管理员知道他本身把这些脚本放到/Windows/System32文件夹而且能经过Windows浏览器看到这些脚本,可是不能指出为何应用程序不能看到这些脚本。考虑到这个问题是和权限相关的,他花费了一些时间来研究这个,因此知道了关于64位版本的Windows保存DLL文件隔离的方法,因此他可以把这些脚本放到/Windows/SysWOW64文件夹。
64
位版本的Windows对于一个管理员来讲,了解底层系统结构很是重要。 浏览器

简单点就是在64位系统下面,请将32DLL文件存放到/Windows/SysWOW64 文件夹中. 安全

相关文章
相关标签/搜索