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

时间:2015-05-06 00:39:45

标签: windows dll

  

我知道我在做什么很奇怪,请不要担心。然而,正在发生什么绝对是疯了。

如果我尝试在Windows 7 64位上使用error_reporting从命令行复制C:\SysWOW32\的DLL文件,我实际上最终得到copy中的文件。为什么会这样?

确定 - dumpbin能够区分DLL文件

C:\System32\

不行 - 其他命令,如md5sum(来自GOW)得到错误的字节!

C:\Users\user\Desktop>dumpbin /headers C:\Windows\System32\opengl32.dll | grep machine
            8664 machine (x64)

C:\Users\user\Desktop>dumpbin /headers C:\Windows\SysWOW64\opengl32.dll | grep machine
             14C machine (x86)
             32 bit word machine

不行 - 使用命令行复制64位DLL

C:\Users\user\Desktop>md5sum C:\Windows\system32\opengl32.dll
\d1bbe227367ed791d5fcf08e132d2956 *C:\\Windows\\system32\\opengl32.dll

C:\Users\user\Desktop>md5sum C:\Windows\SysWow64\opengl32.dll
\d1bbe227367ed791d5fcf08e132d2956 *C:\\Windows\\SysWow64\\opengl32.dll

错误!为什么要复制32位DLL?

确定 - 使用命令行复制32位DLL

C:\Users\user\Desktop>copy C:\Windows\System32\opengl32.dll .
        1 file(s) copied.

C:\Users\user\Desktop>dir opengl32.dll
07/13/2009  06:16 PM           791,552 opengl32.dll

C:\Users\user\Desktop>md5sum opengl32.dll
d1bbe227367ed791d5fcf08e132d2956 *opengl32.dll

C:\Users\user\Desktop>dumpbin /headers opengl32.dll | grep machine
             14C machine (x86)
             32 bit word machine

确定 - 使用资源管理器复制64位DLL

C:\Users\user\Desktop>copy C:\Windows\SysWOW64\opengl32.dll .
Overwrite .\opengl32.dll? (Yes/No/All): yes
        1 file(s) copied.

C:\Users\user\Desktop>dir opengl32.dll
07/13/2009  06:16 PM           791,552 opengl32.dll

C:\Users\user\Desktop>md5sum C:\Windows\System32\opengl32.dll
\d1bbe227367ed791d5fcf08e132d2956 *C:\\Windows\\System32\\opengl32.dll

C:\Users\user\Desktop>dumpbin /headers opengl32.dll | grep machine
             14C machine (x86)
             32 bit word machine

确定 - 使用资源管理器复制32位DLL

<control-drag System32\opengl32.dll to desktop>

C:\Users\user\Desktop>dir opengl32.dll
07/13/2009  06:41 PM         1,039,872 opengl32.dll

C:\Users\user\Desktop>md5sum opengl32.dll
585fed4cdb8034b8b58aeb8008255817 *opengl32.dll

C:\Users\user\Desktop>dumpbin /headers opengl32.dll | grep machine
            8664 machine (x64)

有谁能解释这里发生了什么?

1 个答案:

答案 0 :(得分:3)

您看到的行为是由SysWOW64 File System Redirection

引起的

md5sum.exe是32位二进制文​​件,因此当它请求C:\Windows\System32\opengl32.dll时,文件系统返回C:\Windows\SysWOW64\opengl32.dll

同样,如果您启动32位提示符(C:\Windows\SysWOW64\cmd.exe),请执行copy操作并输入参数C:\Windows\System32\opengl32.dll,复制C:\Windows\SysWOW64\opengl32.dll