我知道我在做什么很奇怪,请不用担心。但是,发生的事情是绝对疯狂的。
如果我尝试使用Windows 7 64位上的copy
从命令行中复制C:SysWOW32
的DLL文件,则实际上我最终会得到C:System32
中的文件。为什么会发生?
好的-Dumpbin能够区分DLL文件
C:UsersuserDesktop>dumpbin /headers C:WindowsSystem32opengl32.dll | grep machine
8664 machine (x64)
C:UsersuserDesktop>dumpbin /headers C:WindowsSysWOW64opengl32.dll | grep machine
14C machine (x86)
32 bit word machine
不正常 - 其他命令,例如MD5SUM(来自GOW)误会字节!
C:UsersuserDesktop>md5sum C:Windowssystem32opengl32.dll
d1bbe227367ed791d5fcf08e132d2956 *C:\Windows\system32\opengl32.dll
C:UsersuserDesktop>md5sum C:WindowsSysWow64opengl32.dll
d1bbe227367ed791d5fcf08e132d2956 *C:\Windows\SysWow64\opengl32.dll
不正常 - 使用命令行
复制64位DLLC:UsersuserDesktop>copy C:WindowsSystem32opengl32.dll .
1 file(s) copied.
C:UsersuserDesktop>dir opengl32.dll
07/13/2009 06:16 PM 791,552 opengl32.dll
C:UsersuserDesktop>md5sum opengl32.dll
d1bbe227367ed791d5fcf08e132d2956 *opengl32.dll
C:UsersuserDesktop>dumpbin /headers opengl32.dll | grep machine
14C machine (x86)
32 bit word machine
错误!为什么要复制32位DLL?
好的 - 使用命令行复制32位DLL
C:UsersuserDesktop>copy C:WindowsSysWOW64opengl32.dll .
Overwrite .opengl32.dll? (Yes/No/All): yes
1 file(s) copied.
C:UsersuserDesktop>dir opengl32.dll
07/13/2009 06:16 PM 791,552 opengl32.dll
C:UsersuserDesktop>md5sum C:WindowsSystem32opengl32.dll
d1bbe227367ed791d5fcf08e132d2956 *C:\Windows\System32\opengl32.dll
C:UsersuserDesktop>dumpbin /headers opengl32.dll | grep machine
14C machine (x86)
32 bit word machine
好的 - 使用Explorer
复制64位DLL<control-drag System32opengl32.dll to desktop>
C:UsersuserDesktop>dir opengl32.dll
07/13/2009 06:41 PM 1,039,872 opengl32.dll
C:UsersuserDesktop>md5sum opengl32.dll
585fed4cdb8034b8b58aeb8008255817 *opengl32.dll
C:UsersuserDesktop>dumpbin /headers opengl32.dll | grep machine
8664 machine (x64)
好的 - 使用Explorer
复制32位DLL<control-drag SysWow64opengl32.dll to desktop>
C:UsersuserDesktop>dir opengl32.dll
07/13/2009 06:16 PM 791,552 opengl32.dll
C:UsersuserDesktop>md5sum opengl32.dll
d1bbe227367ed791d5fcf08e132d2956 *opengl32.dll
C:UsersuserDesktop>dumpbin /headers opengl32.dll | grep machine
14C machine (x86)
32 bit word machine
谁能解释这里发生的事情?
您看到的行为是由syswow64文件系统重定向引起的
md5sum.exe
是32位二进制文件,因此,当它请求C:WindowsSystem32opengl32.dll
时,文件系统返回C:WindowsSysWOW64opengl32.dll
。
同样,如果您启动了32位提示(C:WindowsSysWOW64cmd.exe
),请执行copy
操作并输入参数C:WindowsSystem32opengl32.dll
,C:WindowsSysWOW64opengl32.dll
被复制