Ответы:
В 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.exe
Cygwin), которые работают через подсистему 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.
(это обновленный и расширенный ответ)