Dlaczego java.exe nie jest widoczny z Cygwina, ale jest widoczny z wiersza polecenia?

Odpowiedzi:

14

W edycjach x64 systemu Windows 8/7 / Vista zawartość folderu C: \ Windows \ System32 zależy od bitowości aplikacji.

W przypadku aplikacji 64-bitowych (takich jak Wiersz polecenia systemu Windows cmd.exe) nie ma przekierowania systemu plików:
C:\Windows\System32(w oprogramowaniu) -> C:\Windows\System32(na dysku).
Tak więc folder C: \ Windows \ System32 zawiera 64-bitowe pliki DLL i EXE z punktu widzenia 64-bitowej aplikacji.

W przypadku aplikacji 32-bitowych (takich jak bash.exeCygwin), które działają za pośrednictwem podsystemu WoW64 w systemie Windows x64, istnieją dwa przekierowania w systemie plików:
C:\Windows\System32(w oprogramowaniu) -> C:\Windows\SysWOW64(na dysku).
C:\Windows\Sysnative(w oprogramowaniu) -> C:\Windows\System32(na dysku).
Tak więc folder C: \ Windows \ System32 zawiera 32-bitowe pliki DLL i EXE z punktu widzenia aplikacji 32-bitowej.

Jeśli chcesz uzyskać dostęp do aplikacji 64-bitowych i plików DLL (takich jak java*.exe) z aplikacji 32-bitowych (takich jak Cygwin bash.exe), musisz użyć C:\Windows\Sysnativeścieżki lub /cygdrive/c/Windows/Sysnativenotacji Cygwin.

(jest to zaktualizowana i rozszerzona odpowiedź)

Michaił Kupczik
źródło
Tak, są tam: Chloe @ xps / cygdrive / c / Windows / sysnative $ ls -la java * -rwx ------ + 1 SYSTEM SYSTEM 188320 7 marca 04:43 java.exe
Chloe
Dlaczego to robi? Nie widzę sysnative z wiersza poleceń DOS.
Chloe,
2
Tak więc bash.exe cygwina działa jako aplikacja 32-bitowa iw tym kontekście C: \ Windows \ System32 jest odwzorowany na C: \ Windows \ SysWOW64 (folder bez plików Java *). Wiersz polecenia systemu Windows (cmd.exe) działa jako aplikacja 64-bitowa, dzięki czemu jest w stanie zobaczyć prawdziwe C: \ Windows \ System32. Użyj C: \ Windows \ sysnative, aby uzyskać dostęp do prawdziwego katalogu system32 z aplikacji 32-bitowych. Więcej informacji na ten temat: msdn.microsoft.com/en-us/library/windows/desktop/…
Mikhail Kupchik
Wow, to jest całkowicie do tyłu i mylące!
Chloe,
1
Tak, powinni utworzyć katalog \ Windows \ system64 dla 64-bitowych systemowych plików DLL i EXE, ale niestety mamy 64-bitowe pliki w katalogu System32 i niewygodne przekierowanie systemu plików.
Michaił Kupchik