В 64-разрядных версиях Windows у Вас есть две отдельные папки Program Files. У Вас также есть два отдельных системных каталога, в которых хранятся библиотеки DLL и исполняемые файлы: System32 и SysWOW64. Несмотря на имена, System32 полон 64-битных файлов, а SysWOW64 полон 32-битных файлов. Так что же дает?
Что такое System32?
Каталог System32 содержит системные файлы Windows, файлы библиотек .DLL, используемые программами, и утилиты программ .EXE, которые являются частью Windows. Хотя большинство файлов, которые Вы здесь найдете, являются частью операционной системы Windows, сторонние программные продукты иногда также устанавливают свои собственные DLL-файлы в эту папку.
Приложения, запущенные в Вашей системе, могут быть установлены в папке Program Files или в другом месте, но они часто загружают общесистемные библиотеки из папки System32.
Разделение 32-битных и 64-битных библиотек
В 64-разрядной версии Windows у Вас есть папка C:\Program Files, содержащая 64-разрядные программы и их файлы, и папка C:\Program Files (x86), содержащая 32-разрядные программы и их файлы. Это полезно для разделения этих файлов, потому что для 64-битных программ нужны 64-разрядные DLL-файлы, а 32-разрядные программы нуждаются в 32-разрядных DLL-файлах.
Если 32-разрядная программа загружает нужный DLL-файл, находит 64-разрядную версию и пытается ее загрузить, она «упадет». Разделяя 64-битное и 32-битное программное обеспечение на две разные папки Program Files, Windows гарантирует, что они не будут перепутаны и не вызовут проблем.
Однако не все файлы DLL хранятся в Program Files. Многие системные библиотеки, включенные в Windows, хранятся в C:\System32, а некоторые программы также выгружают свои собственные файлы библиотек. Таким образом, так же, как Windows имеет отдельные 32-битные и 64-разрядные папки Program Files, у нее также есть отдельные 32-битные и 64-разрядные версии папки System32.
System32 и SysWOW64
На 32-битном компьютере все 32-разрядные программы хранят свои файлы в C:\Program Files, а общесистемные библиотеки — C:\System32.
На 64-битном компьютере 64-разрядные программы хранят свои файлы в C:\ Program Files, а общесистемная папка C:\Windows\System32 содержит 64-разрядные библиотеки. 32-разрядные программы хранят свои файлы в C:\Program Files (x86), а общесистемная папка — C:\Windows\SysWOW64.
Это определенно нелогично. Несмотря на «32» в названии, папка System32 содержит 64-битные библиотеки. И, несмотря на 64 в названии, папка SysWOW64 содержит 32-битные библиотеки — по крайней мере, в 64-разрядных версиях Windows.
В общем, Вам не нужно это знать. Операционная система и программы Windows, которые Вы используете, автоматически размещают свои файлы в правильном месте и используют правильную папку. Однако, если Вам когда-либо понадобится вручную установить DLL-файл в нужное место или найти, где он установлен, что очень редко, Вам нужно знать, где именно искать.
WOW64
Часть названия WOW64 здесь относится к программному обеспечению Microsoft Windows «32-разрядная версия Windows 64-bit», которое входит в состав операционной системы. Это позволяет Windows запускать 32-разрядные программы в 64-разрядной версии Windows. WoW64 перенаправляет доступ к файлам для обеспечения правильной работы программ.
Например, если Вы устанавливаете 32-разрядную программу в 64-разрядной версии Windows и пытаетесь записать ее в папку C:\Program Files, WoW64 указывает ее на C:\Program Files (x86). И, если он хочет получить доступ к папке C: Windows\System32, WoW64 указывает на C:\Windows\SysWOW64. Windows делает это, используя перенаправитель файловой системы.
Все это происходит автоматически и прозрачно в фоновом режиме. Программа даже не должна знать, что она работает в 64-битной операционной системе, что позволяет более старым 32-разрядным программам запускаться без изменений в 64-разрядных версиях Windows. WOW64 также перенаправляет доступ к реестру, обеспечивая наличие отдельных областей реестра для 64-разрядных и 32-разрядных программ.
Итак, почему 64-разрядная система System32 и 32-разрядная SysWOW64?
Все это возвращает нас к вопросу: почему папка «System32» 64-разрядная и SysWOW64 32-разрядная?
Ответ заключается в том, что многие 32-разрядные приложения были жестко запрограммированы для использования каталога C:\Windows\System32. Когда разработчики перекомпилировали эти приложения для 64-разрядных версий Windows, они продолжали использовать каталог C:\Windows\System32.
Вместо того, чтобы переименовывать каталог и заставлять разработчиков переходить на новый, ломая много приложений в этом процессе, Microsoft оставила «System32» в качестве стандартного каталога системной библиотеки. Они создали новый каталог библиотек для приложений, работающих под слоем WoW64, которые они назвали «SysWOW64».
Да, немного глупо, что каталог с «32» в имени теперь 64-битный. Возможно, Microsoft должна была увидеть это, когда они назвали его C:\Windows\System32 в 90-х. Но, хотя более простая схема именования будет приятной, не стоит ломать кучу программ и создавать больше работы для разработчиков, чтобы добраться туда. Это означает, что мы будем придерживаться System32 и SysWOW64 в обозримом будущем.