我知道我在做什么很奇怪,请不要担心。然而,正在发生什么绝对是疯了。
如果我尝试在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)
有谁能解释这里发生了什么?
答案 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