Windows 为什么可以';我是否从命令行从C:\SysWOW64复制DLL?

Windows 为什么可以';我是否从命令行从C:\SysWOW64复制DLL?,windows,dll,Windows,Dll,我知道我做的很奇怪,请不要担心。然而,正在发生的事情绝对是疯狂的 如果我试图在64位Windows 7上使用copy从命令行从C:\SysWOW32\复制一个DLL文件,我实际上会得到C:\System32\中的文件。为什么会这样 确定-dumpbin能够区分DLL文件 C:\Users\user\Desktop>dumpbin /headers C:\Windows\System32\opengl32.dll | grep machine 8664 machine

我知道我做的很奇怪,请不要担心。然而,正在发生的事情绝对是疯狂的

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

确定-dumpbin能够区分DLL文件

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
不正常-其他命令,如md5sum(from)获取的字节错误

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
不正常-使用命令行复制64位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
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

确定-使用命令行复制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
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
确定-使用资源管理器复制64位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)
<control-drag SysWow64\opengl32.dll to desktop>

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

C:\Users\user\Desktop>dir opengl32.dll
07/13/2009 06:41 PM 1039872 opengl32.dll
C:\Users\user\Desktop>md5sum opengl32.dll
585fed4cdb8034b8b58aeb8008255817*opengl32.dll
C:\Users\user\Desktop>dumpbin/headers opengl32.dll | grep machine
8664机器(x64)
确定-使用资源管理器复制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)
<control-drag SysWow64\opengl32.dll to desktop>

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

C:\Users\user\Desktop>dir opengl32.dll
07/13/2009 06:16 PM 791552 opengl32.dll
C:\Users\user\Desktop>md5sum opengl32.dll
d1bbe227367ed791d5fcf08e132d2956*opengl32.dll
C:\Users\user\Desktop>dumpbin/headers opengl32.dll | grep machine
14C机器(x86)
32位字机

有人能解释一下这里发生了什么吗?

你看到的行为是由

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
被复制

您是否正在从
visualstudio命令提示符
执行
复制
操作?请参阅答案(32位程序将对system32的访问重定向到SysWOW64)。@MathiasR.Jessen是的,或者我至少从常规提示符中获取了
vsvarsall.bat
。啊哈!很好的链接。谢谢大家!@apaidnerd是的,
WOW64禁用WOW64FSRedirection
功能是