Warum ist java.exe in cygwin nicht sichtbar, aber in der Eingabeaufforderung?

Antworten:

14

In x64-Editionen von Windows 8/7 / Vista hängt der Inhalt des Ordners C: \ Windows \ System32 von der Bitheit der Anwendung ab.

Für 64-Bit-Anwendungen (wie die Windows-Eingabeaufforderung cmd.exe) gibt es keine Umleitung des Dateisystems:
C:\Windows\System32(in der Software) -> C:\Windows\System32(auf der Festplatte).
Der Ordner C: \ Windows \ System32 enthält also 64-Bit-DLL- und EXE-Dateien aus Sicht der 64-Bit-Anwendung.

Für 32-Bit-Anwendungen (z. B. bash.exevon Cygwin), die über das WoW64-Subsystem unter Windows x64 ausgeführt werden, gibt es zwei Umleitungen im Dateisystem:
C:\Windows\System32(in der Software) -> C:\Windows\SysWOW64(auf der Festplatte).
C:\Windows\Sysnative(in Software) -> C:\Windows\System32(auf Festplatte).
Der Ordner C: \ Windows \ System32 enthält also 32-Bit-DLL- und EXE-Dateien aus Sicht der 32-Bit-Anwendung.

Wenn Sie java*.exeüber 32-Bit-Anwendungen (z. B. Cygwins bash.exe) auf 64-Bit-Anwendungen und DLL-Dateien (z. B. ) zugreifen möchten , müssen Sie den C:\Windows\SysnativePfad oder die /cygdrive/c/Windows/SysnativeCygwin-Notation verwenden.

(Dies ist eine aktualisierte und erweiterte Antwort)

Mikhail Kupchik
quelle
Ja, sie sind da: Chloe @ xps / cygdrive / c / Windows / sysnative $ ls -la java * -rwx ------ + 1 SYSTEM SYSTEM 188320 7. März 04:43 java.exe
Chloe
Warum macht es das? Ich kann sysnative von der DOS-Eingabeaufforderung nicht sehen.
Chloe
2
Die bash.exe von cygwin wird also als 32-Bit-Anwendung ausgeführt. In diesem Kontext wird C: \ Windows \ System32 C: \ Windows \ SysWOW64 (einem Ordner ohne Java * -Dateien) zugeordnet. Die Windows-Eingabeaufforderung (cmd.exe) wird als 64-Bit-Anwendung ausgeführt und kann daher true C: \ Windows \ System32 anzeigen. Verwenden Sie C: \ Windows \ sysnative, um über 32-Bit-Anwendungen auf das echte system32-Verzeichnis zuzugreifen. Weitere Informationen zu diesem Thema: msdn.microsoft.com/en-us/library/windows/desktop/…
Mikhail Kupchik
Wow das ist total rückwärts und verwirrend!
Chloe
1
Ja, sie hätten das Verzeichnis \ Windows \ system64 für 64-Bit-System-DLL- und EXE-Dateien erstellen sollen, aber leider haben wir 64-Bit-Dateien im System32-Verzeichnis und eine umständliche Umleitung des Dateisystems.
Mikhail Kupchik