为什么从cygwin中看不到java.exe,但是从命令提示符中可见?


Answers:


14

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

对于64位应用程序(例如Windows Command Prompt,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\Sysnativepath或/cygdrive/c/Windows/SysnativeCygwin表示法。

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


是的,它们在那里:Chloe @ xps / cygdrive / c / Windows / sysnative $ ls -la java * -rwx ------ + 1 SYSTEM SYSTEM 188320 Mar 7 04:43 java.exe
Chloe

为什么这样做呢?我在DOS提示符下看不到系统信息。
Chloe 2013年

2
因此,cygwin的bash.exe作为32位应用程序运行,并且在这种情况下C:\ Windows \ System32被映射到C:\ Windows \ SysWOW64(一个没有java *文件的文件夹)。Windows命令提示符(cmd.exe)作为64位应用程序运行,因此它可以看到真实的C:\ Windows \ System32。使用C:\ Windows \ sysnative从32位应用程序访问真实的system32目录。:关于这个主题的更多信息msdn.microsoft.com/en-us/library/windows/desktop/...
米哈伊尔Kupchik

哇,这简直是倒退而令人困惑!
Chloe 2013年

1
是的,他们应该为64位系统DLL和EXE文件创建\ Windows \ system64目录,但是不幸的是,我们在System32目录中有64位文件,并且文件系统重定向很尴尬。
米哈伊尔·库普奇克
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.