Ответы:
В 64-разрядных выпусках Windows 8/7 / Vista содержимое папки C: \ Windows \ System32 зависит от разрядности приложения.
Для 64-разрядных приложений (таких как командная строка Windows cmd.exe) перенаправление файловой системы отсутствует:
C:\Windows\System32(в программном обеспечении) -> C:\Windows\System32(на диске).
Таким образом, папка C: \ Windows \ System32 содержит 64-битные файлы DLL и EXE с точки зрения 64-битного приложения.
Для 32-разрядных приложений (таких как bash.exeCygwin), которые работают через подсистему WoW64 в Windows x64, в файловой системе существует два перенаправления:
C:\Windows\System32(в программном обеспечении) -> C:\Windows\SysWOW64(на диске).
C:\Windows\Sysnative(в программном обеспечении) -> C:\Windows\System32(на диске).
Таким образом, папка C: \ Windows \ System32 содержит 32-битные файлы DLL и EXE с точки зрения 32-битного приложения.
Если вы хотите получить доступ к 64-битным приложениям и файлам DLL (таким как java*.exe) из 32-битных приложений (таких как Cygwin's bash.exe), вам нужно использовать C:\Windows\Sysnativeпуть или /cygdrive/c/Windows/Sysnativeв нотации Cygwin.
(это обновленный и расширенный ответ)