Windows目录下SysWow64文件夹与System32文件夹-程序员宅基地

技术标签: system32  syswow64  windows  

首先说一句,被坑不浅……

1. System32

Windows 操作系统的系统文件夹。是操作系统的神经中枢.文件夹中包含了大量的用于Windows操作系统的文件.这里主要用于存储 DLL 文件,控制面板小程序(.CPL), 设备驱动 (.drv), 帮助文件 (.hlp 和 .cnt), MS-DOS 工具 (.com), 语言支持文件 (.nls), 屏幕保护 (.scr), 安装信息文件 (.inf), 以及其它用于支持,配置,或操作的文件。

注意:不要被文件夹名字中32蒙蔽了!!!在64位操作系统中,此文件夹里的程序库都是64位的,64位的,64位的……

2. SysWow64

wow,什么是wow?

64位的Windows并不是简单地把所有东西都编译成64位就万事大吉的。关于64位的CPU应该做成什么样子,Intel和AMD曾有各自的打算。AMD的回答直接了当:新的64位处理器,应该能在提高更高处理能力的同时,保持对32位应用程序的兼容性。而Intel则希望借此机会,把下一代的处理器,设计得更完美。于是,就有了AMD的x86-64(后被称为amd64)的处理器和Intel的IA-64(安腾)处理器。和amd64不一样的是,安腾处理器并没有很好地提供对32位应用程序的支持。具体信息,读者在网上应该很容易找到,也就不多说了。

Windows作为一个操作系统,自然希望用户在运行64位操作系统时,也能像以前一样,运行各种32位应用程序。这一点,在amd64处理器上,相对容易做到。而安腾,几乎是另外一回事。(后来Intel也生产了兼容amd64的处理器,但那是后话。)

虽然我说“相对”容易做到,但也不是空手套白狼。当操作系统运行在64位时,怎么才能保证已经存在的32位应用程序以为自己仍然运行在32位系统上呢?微软的解决方案是:Wow64,全称是32bit Windows On 64bit Windows(64位Windows上的32位Windows)。

你也可以这样理解,虽然整个系统是运行在64位模式,但如果一个应该程序是32位的,Windows会在64位的基础上,加载一个“32位的Windows”。这样,这个32位应用程序就以为自己是运行在32位的系统之上的。

于是,你也可以想象,这就意味着,64位的Windows,不但带有64位操作系统应有的系统文件,还带有32位系统应有的系统文件。

我们都知道的是,Windows系统的主要系统文件都是放在一个叫做System32的文件夹中的。为了能同时放下两套系统文件,Windows会在64位的系统上,增加了一个文件夹,叫SysWow64

这便有了一个问题,System32和SysWow64里面,哪个放的是64位的系统文件,哪个放的是32位的系统文件呢?

如果你还记得Wow64指的是64位Windows上的32位Windows,那么,你就能会想到,SysWow64里放的是32位的系统文件。但你也可能会问,为什么一个明明叫System32的文件夹装的是64位的系统文件,而一个明明叫SysWow64的文件夹装的却是32位的系统文件呢?既然是64位的系统,为什么不能有System64和System32这样的文件夹呢?

这个问题问得很好。答案也很简单:人在江湖,身不由己。

3. 兼容性

如果我问你,可曾有多少机会接触过安腾处理器呢?我想,对于一般人来讲,应该是没有的。那为什么amd64会大行其道,而安腾处理器却鲜为人知呢?还是因为一个软硬件设计上的关键概念:兼容性。

正是因为安腾处理器,没有做好对已有的32位系统提供良好的支持,便其一直处于市场的边缘。这和你不会买一台看不了模拟信号频道的高清电视是一个道理。

之前我们谈到的兼容性,是指在64位Windows上,兼容已经有的32位应用程序。现在考虑另一种兼容性。

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

你肯定会想,那让32位搬到SysWow64中去以后,那些写死在32位应用程序中的System32怎么办?答:Windows会给他们转向到SysWow64中去。那让64位中的System32转向到System64不也是一样么?真的一样么?不一样么?真的一样么?不一样么?真的不一样。

作为64位Windows操作系统,当然是希望能充分发挥64位处理器的潜力,让应用程序更有效率地运行。如果在运行64位应用程序时,总要检查是否需要转向,势必影响程序运行效率。所以,不能给64位应用程序做没有必要的转向,如果说必须要转,那就只能转32位应用程序了。是的,没有办法,在64位操作系统中,32位应用程序要做一些小的牺牲。

此外,为了保证32位应用程序不与64位应用程序相冲突,除了System32文件夹外,注册表也需要为32位和64位提供两套,也需要让32位的应用程序在必要时重定向。

4. 结论

所以SysWow64文件夹,是64位Windows,用来存放32位Windows系统文件的地方。

5. 后记

本人被这个问题坑害不浅。写个程序放在winXP下运行总是出现0Xc000007b的错误,查了好多材料,都说是我32位程序引用64位版本库所至,于是我就傻乎乎的从原来系统的System32中去下载所谓的“32位”程序库,结果一点儿用都没有,郁闷的要死……一天整个人都不好了……

本文部分参考:http://blogs.msdn.com/b/tianlin/archive/2011/10/26/syswow64.aspx

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u014261408/article/details/90110185

智能推荐

android 日历 插件,Android实现日历控件示例代码-程序员宅基地

文章浏览阅读188次。做的是一个酒店的项目,可以选择入住和离开的日期。声明为了省事在网上找的资料,自己修改的逻辑,希望对需要的朋友有帮助。喜欢的给个好评。谢谢啦!祝生活愉快!先上图第一步,搭建布局xmlxmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="m..._日历只有三个文件源代码android

现在的python版本_为什么我要把python版本升级到3.8?是因为它的稳定?-程序员宅基地

文章浏览阅读801次。你是否还在使用Python3.7,3.6……甚至是更老的Python版本?确实,尝试去使用一个比较“新”的Python版本存在一定风险,我们容易遇到一些问题:生态,各种库的支持,兼容性……不同版本的解释器存在差异,以前的项目还能不能继续使用是个问题……新的特性或者功能太香,我实在忍不住更新了却遭遇到bug……image.png实际上,Python3.7的正式版最早发布于2018年06月15日,截止..._为啥2023还用python3.7版本

oracle 建立外键 引用条件约束 不能添加,Oracle外键约束(Foreign Key)的几个操作选项...-程序员宅基地

文章浏览阅读320次。关系型数据库是以数据表和关系作为两大对象基础。数据表是以二维关系将数据组织在DBMS中,而关系建立数据表之间的关联,搭建现实对象模型。主外键是任何数据库系统都需存在的约束对象,从对象模型中的业务逻辑加以抽象,作为物理设计的一个部分在数据库中加以实现。Oracle外键是维护参照完整性的重要手段,大多数情况下的外键都是紧密关联关系。外键约束的作用,是保证字表某个字段取值全都与另一个数据表主键字段相对应..._no primary key column specified for foreign oracle table

有符号数和无符号数在计算机中怎么区分?_机器怎么判断带符号二进制数-程序员宅基地

文章浏览阅读4.3k次。确如题主所说,计算机中存储的任何数据都是二进制形式,单看数据是无法认定其格式和内容的。计算机要用二进制编码来表达数值的符号,最直观的方法就是符号位。但为了保证基本算术运算在正负数上的一致性,x86计算机对负数采用了特殊的编码方式,即补码。为什么补码这么巧妙实现了正负数的加减运算?参见维基百科:补码-1的二进制表示下面结合题主提到的寄存器状态举个例子。为简化起见,我们8位二进制数来讲。先看8位二进制与无符号数和有符号数的对应二进制无符号 有符号00000000 0 000000001 1 1_机器怎么判断带符号二进制数

c语言图像剪影代码,信息系C语言社团活动剪影-南京商业学校.PDF-程序员宅基地

文章浏览阅读97次。信息系C 语言社团活动剪影12 月7 日,信息系C 语言社团第 15 周活动在汉中门 17 联院软件班举行,共有 24 位社团成员参加,由赵灵杰主持,指导老师是魏兰。本次活动一共有导入、理论、活动、反馈、总结等5 个版块,活动采取游戏化教学模式形式,活动内容涉及到数学、编程、游戏等方面。为了更好的理解本次社团的活动内容,我们还将采用小游戏的方式使同学们更易理解。本次社团活动充分展现了同学们的逻辑思..._南京商业学校 沈发

论文关于初学计算机的理解,计算机网络学习论文范文-程序员宅基地

文章浏览阅读86次。1.实践研究设计 1.1研究方法 根据问卷调查和访谈法分析我校的学生在通过外语实验教学示范中心进行自主学习的各种不平衡现象和各类问题,问卷调查和访谈重点考察学生对网络学习资源的利用情况、依托网络平台教师的...2019-05-191基于计算机网络具代表性的学习模式 (1)开放性。互联网能够把学校与整个社会紧密联系在一起,可以随时给学习者提供一个开放、互动的学习环境,打破了原有学习时间与空间的限制。...

随便推点

KEIL debug无法进入main函数 或 debug卡死的原因总结_keil5debug卡在fpu_irqhandler-程序员宅基地

文章浏览阅读1.7w次,点赞23次,收藏110次。今天在新移植的ucos工程上,突然发现debug进不了main函数,debug直接进入SystemInit函数,单步发现循环走汇编指令(如图一),开始时推测是中断引起的,把关联的中断处理屏蔽后,发现还是有问题,费了九牛二虎之力才将问题解决,通过调查,发现能引起此问题的原因不少,简单总结如下,希望大家遇到此类问题能快速解决。图一整体来说导致debug无法进入main函数或卡死的原因有以下几类:A. 硬件问题B. KEIL软件配置问题C.代码本身的问题(我遇到的就是这个原因)下面_keil5debug卡在fpu_irqhandler

C语言练习题【复试准备】_c语言复试编程题目及答案-程序员宅基地

文章浏览阅读885次,点赞21次,收藏29次。参考:鹏哥C语言;苏小红C程序设计(C语言复试)_c语言复试编程题目及答案

Metasploit-ms17-010永恒之蓝(X86使用)_ms17_010_eternalblue x86-程序员宅基地

文章浏览阅读5.2k次。Metasploit正题搜索相关的漏洞插件msf > search 17-010搜索到了4个相关的插件:auxiliary/admin/smb/ms17_010_command auxiliary/scanner/smb/smb_ms17_010 exploit/windows/smb/ms17_010_eternalblue exploit/win..._ms17_010_eternalblue x86

二分查找(Java) 详细讲解 一文足矣_二分查找找到多个会怎样-程序员宅基地

文章浏览阅读4k次。二分查找,也称为折半查找,是一种在有序数组中查找特定元素的高效算法。其基本思想是每次将查找范围缩小一半,直到找到目标元素或确定目标元素不存在。这段代码演示了如何使用二分查找在有序数组中查找目标元素。最后输出结果,指示目标元素是否存在以及其索引位置。方法中,我们定义了一个有序数组。,并在其中查找目标元素。_二分查找找到多个会怎样

LeetCode JAVA解题---897. 递增顺序查找树_leetcode java实现897-程序员宅基地

文章浏览阅读150次。LeetCode 题库 全 JAVA 解题994. 腐烂的橘子原题回顾:在给定的网格中,每个单元格可以有以下三个值之一:值 0 代表空单元格;值 1 代表新鲜橘子;值 2 代表腐烂的橘子。每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会腐烂。返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1。来源:力扣(LeetCode)链接:ht..._leetcode java实现897

使用高斯混合模型(GMM)分割图像_gmm图像分割-程序员宅基地

文章浏览阅读6.9k次,点赞2次,收藏38次。使用C++、opencv中的高斯混合模型(GMM)进行图像分割关于GMM聚类的原理及过程可参考博客:https://blog.csdn.net/lin_limin/article/details/81048411使用聚类的方法分割图像,即将图像的像素点值(通常用彩色图像,像素点值为一个三元数组(b,g,r))作为聚类的元素,从而将图像中所有的点分为n类,达到分割的效果。代码:#i..._gmm图像分割

推荐文章

热门文章

相关标签