Mik*_*hik 14

在 x64 版本的 Windows 8/7/Vista 中,C:\Windows\System32 文件夹的内容取决于应用程序的位数

对于 64 位应用程序(例如 Windows 命令提示符cmd.exe),没有文件系统重定向:(
C:\Windows\System32在软件中)-> C:\Windows\System32(在磁盘上)。
因此,从 64 位应用程序的角度来看,C:\Windows\System32 文件夹包含 64 位 DLL 和 EXE 文件。

对于bash.exe通过 Windows x64 上的 WoW64 子系统运行的32 位应用程序(例如来自 Cygwin),文件系统中有两个重定向:(
C:\Windows\System32在软件中)-> C:\Windows\SysWOW64(在磁盘上)。
C:\Windows\Sysnative(在软件中)-> C:\Windows\System32(在磁盘上)。
因此,从 32 位应用程序的角度来看,C:\Windows\System32 文件夹包含 32 位 DLL 和 EXE 文件。

如果java*.exe要从 32 位应用程序(例如 Cygwin 的bash.exe)访问 64 位应用程序和 DLL 文件(例如),则需要使用C:\Windows\Sysnative路径,或/cygdrive/c/Windows/Sysnative使用 Cygwin 表示法。

(这是一个更新和扩展的答案)

  • 因此,cygwin 的 bash.exe 作为 32 位应用程序运行,并且在该上下文中 C:\Windows\System32 映射到 C:\Windows\SysWOW64(一个没有 java* 文件的文件夹)。Windows 命令提示符 (cmd.exe) 作为 64 位应用程序运行,因此它能够看到真正的 C:\Windows\System32。使用 C:\Windows\sysnative 从 32 位应用程序访问真正的 system32 目录。有关此主题的更多信息:http://msdn.microsoft.com/en-us/library/windows/desktop/aa384187%28v=vs.85%29.aspx (2认同)