System

  • System存储可运行16位代码DLL文件

System32

  • 32位的Windows操作系统存储可运行32位代码的DLL文件
  • 64位的Windows操作系统存储可运行64位代码的DLL文件
    :为什么System32的文件夹装的是64位的系统文件呢?
    原因:兼容性。如果你写了一个32位的应用程序,现在,你想把它变成64位的应用程序,以更充分地利用64位处理器所带来的新的处理能力。你肯定觉得,这不就是让64位编译器编译一遍就完了的事儿么?可能你发现,这并不是骨感的现实。你突然发现,你的程序里,为了某些你已经想不起来的原因,把System32这个文件夹,写死在了你的程序里。而这个System32中的32,让你很不安。你尝试着运行了你的程序,却发现一切正常。为什么呢?因为这是Windows系统的另一个兼容性方面的努力:让一个已有的32位应用程序,不加修改或者尽可能少地加以修改,便可以被编译成64位应用程序并在64位Windows上运行。其实,把System32这样的路径,写死在程序里,并不是一个个案。所以,为了保证这些应用程序可以顺利地过渡到64位,Windows最后还是决定让64位的系统文件放在System32的文件夹下

SysWow64

  • Wow64:(32 bit) Windows on Windows 64,即运行在64 windows上的32位windows
  • 64位操作系统存储可运行的32位代码运行的DLL文件
  • 如果32位应用程序写死在System32文件夹中,系统会将其转到SysWow64文件夹中去
    :为什么不让System32下可运行的64位代码直接转到SysWow64文件夹中去呢?
    原因:作为64位Windows操作系统,当然是希望能充分发挥64位处理器的潜力,让应用程序更有效率地运行。如果在运行64位应用程序时,总要检查是否需要转向,势必影响程序运行效率。所以,不能给64位应用程序做没有必要的转向,如果说必须要转,那就只能转32位应用程序了。是的,没有办法,在64位操作系统中,32位应用程序要做一些小的牺牲。