为什么我不能从命令行从 C:\SysWOW64 复制 DLL?



我知道我在做什么很奇怪,请不用担心。但是,发生的事情是绝对疯狂的。

如果我尝试使用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位DLL
C: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.dllC:WindowsSysWOW64opengl32.dll被复制

最新更新