В чем разница между папками «System32» и «SysWOW64» в Windows?

В 64-битных версиях Windows у вас есть две отдельные папки Program Files. Но это еще не все. У вас также есть два отдельных системных каталога, в которых хранятся библиотеки DLL и исполняемые файлы: System32 и SysWOW64. Несмотря на названия, System32 содержит 64-разрядные файлы, а SysWOW64 - 32-разрядные файлы. Так что же дает?

Что такое System32?

СВЯЗАННЫЕ: Что такое файлы DLL и почему один отсутствует на моем компьютере?

Каталог System32 содержит системные файлы Windows, как файлы библиотеки .DLL, используемые программами, так и программные утилиты .EXE, являющиеся частью Windows. Хотя большинство файлов, которые вы здесь найдете, являются частью операционной системы Windows, сторонние программы иногда также устанавливают свои собственные файлы DLL в эту папку.

Приложения, работающие в вашей системе, могут быть установлены в папке Program Files или в другом месте, но они часто загружают общесистемные библиотеки из папки System32.

Разделение 32-битных и 64-битных библиотек

СВЯЗАННЫЕ: В чем разница между папками «Program Files (x86)» и «Program Files» в Windows?

В 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, объяснил

СВЯЗАННЫЕ: Почему большинство программ все еще 32-разрядные в 64-разрядной версии Windows?

Часть имени «WOW64» здесь относится к программному обеспечению Microsoft «32-разрядная версия Windows на 64-разрядной версии Windows», которое является частью операционной системы. Это позволяет 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-битных программ.

Так почему же System32 64-разрядная, а SysWOW64 32-разрядная?

Все это возвращает нас к вопросу на миллион долларов: почему папка «System32» 64-битная, а SysWOW64 32-битная?

Кажется, ответ заключается в том, что многие 32-разрядные приложения были жестко запрограммированы для использования каталога C: \ Windows \ System32. Когда разработчики перекомпилировали эти приложения для 64-битных версий Windows, они продолжили использовать каталог C: \ Windows \ System32.

Вместо того, чтобы переименовывать каталог и заставлять разработчиков переходить в новый каталог, нарушая работу многих приложений, Microsoft оставила «System32» в качестве каталога стандартной системной библиотеки. Они создали новую библиотеку для приложений, работающих под слоем WoW64, которую они назвали «SysWOW64». Когда вы думаете об этом так, название приобретает больше смысла.

Да, это немного глупо, что каталог с «32» в имени теперь 64-битный. Возможно, Microsoft должна была предвидеть это, когда в 90-х годах назвала его C: \ Windows \ System32. Но, хотя более простая схема именования была бы хороша, не стоит ломать кучу программ и создавать больше работы для разработчиков, чтобы добраться до нее. Это означает, что в обозримом будущем мы остановимся на System32 и SysWOW64.