Pourquoi java.exe n'est-il pas visible depuis cygwin, mais est-il visible depuis l'invite de commande?

Réponses:

14

Dans les éditions x64 de Windows 8/7 / Vista, le contenu du dossier C: \ Windows \ System32 dépend du nombre de bits de l'application.

Pour les applications 64 bits (telles que l'invite de commandes Windows cmd.exe), il n'y a pas de redirection du système de fichiers:
C:\Windows\System32(dans le logiciel) -> C:\Windows\System32(sur le disque).
Ainsi, le dossier C: \ Windows \ System32 contient des fichiers DLL et EXE 64 bits, du point de vue de l'application 64 bits.

Pour les applications 32 bits (comme bash.exeCygwin) qui s'exécutent via le sous-système WoW64 sous Windows x64, il existe deux redirections dans le système de fichiers:
C:\Windows\System32(dans le logiciel) -> C:\Windows\SysWOW64(sur le disque).
C:\Windows\Sysnative(dans le logiciel) -> C:\Windows\System32(sur disque).
Ainsi, le dossier C: \ Windows \ System32 contient des fichiers DLL et EXE 32 bits, du point de vue de l'application 32 bits.

Si vous souhaitez accéder aux applications 64 bits et aux fichiers DLL (tels que java*.exe) à partir d'applications 32 bits (telles que Cygwin bash.exe), vous devez utiliser le C:\Windows\Sysnativechemin d'accès ou /cygdrive/c/Windows/Sysnativeen notation Cygwin.

(ceci est une réponse mise à jour et étendue)

Mikhail Kupchik
la source
Oui, ils sont là: Chloe @ xps / cygdrive / c / Windows / sysnative $ ls -la java * -rwx ------ + 1 SYSTEM SYSTEM 188320 7 mars 04:43 java.exe
Chloe
Pourquoi ça fait ça? Je ne peux pas voir sysnative à partir de l'invite DOS.
Chloé
2
Ainsi, bash.exe de cygwin s'exécute en tant qu'application 32 bits et dans ce contexte, C: \ Windows \ System32 est mappé sur C: \ Windows \ SysWOW64 (un dossier sans fichiers java *). L'invite de commande Windows (cmd.exe) s'exécute en tant qu'application 64 bits et peut donc voir le vrai C: \ Windows \ System32. Utilisez C: \ Windows \ sysnative pour accéder au véritable répertoire system32 à partir d'applications 32 bits. Plus d'informations sur ce sujet: msdn.microsoft.com/en-us/library/windows/desktop/…
Mikhail Kupchik
Wow, c'est totalement à l'envers et déroutant!
Chloé
1
Oui, ils devraient avoir créé le répertoire \ Windows \ system64 pour les fichiers DLL et EXE système 64 bits, mais malheureusement, nous avons des fichiers 64 bits dans le répertoire System32 et une redirection du système de fichiers maladroite.
Mikhail Kupchik