Почему Windows помещает 64-битные системные файлы в System32, а 32-битные файлы в SysWOW64?

📅 2026-10-20

Аннотация:

В Windows 11 есть конструкция, которая уже давно смущает пользователей: в 64-битной системе C:WindowsSystem32 фактически хранит 64-битные системные файлы, а в каталоге C:WindowsSysWOW64 с «64» в имени вместо этого хранятся 32-битные файлы. Пользователям, не знающим историю Windows, эта схема именования может показаться совершенно противоположной.

Инженеры Microsoft недавно еще раз объяснили причины такой конструкции. Ответ не в том, что Microsoft просто поменяла имена каталогов, а в том, чтобы избежать поломки большого количества программного обеспечения, которое использовало старые пути. Когда Windows перешла с 32-битной архитектуры на 64-битную, она решила сохранить уже широко используемое имя каталога System32, а затем использовала механизм перенаправления файловой системы, чтобы позволить 32-битным программам автоматически получать доступ к другому набору системных файлов.

20 октября 2026 г. компания Windows Latest опубликовала статью, в которой описана эта проблема и объяснен соответствующий механизм в сочетании с официальными техническими документами Microsoft. В отчете отмечается, что этот дизайн полностью отражает давнюю настойчивость Windows в обеспечении совместимости программного обеспечения: даже если старый метод именования больше не является интуитивно понятным, поскольку необдуманные модификации могут привести к невозможности запуска большого количества программ, Microsoft стремится сохранить исходную структуру и решить проблему через уровень совместимости.

Чтобы понять эту конструкцию, нужно вернуться в первые дни существования Windows.

В эпоху 16-битной Windows системные файлы в основном хранились в каталоге C:WindowsSystem. Когда Microsoft выпустила 32-битную версию Windows, системе потребовался новый каталог для размещения 32-битных системных файлов, поэтому использовался C:WindowsSystem32. «32» действительно связано с 32-битной архитектурой системы того времени.

Но когда вышла 64-битная версия Windows, все усложнилось. Большое количество программного обеспечения запрограммировало System32 в программный код и напрямую использует этот путь для доступа к системным файлам вместо динамического получения правильного системного каталога через системный интерфейс, предоставляемый Windows.

Если Microsoft напрямую переименовывает System32 в System64 при запуске 64-битной Windows, то многие старые программы, установщики и пакетные сценарии могут не найти нужные им системные файлы. Даже если разработчики перекомпилируют программное обеспечение, они, возможно, не смогут вовремя исправить все жестко закодированные пути.

Что еще более неприятно, так это то, что некоторые программы по-прежнему считывают соответствующие системные компоненты из System32 по умолчанию после обновления до 64-битной версии. Если Microsoft изменит System32 для хранения только 32-битных файлов, эти 64-битные программы не смогут нормально загружать необходимые библиотеки динамической компоновки.

Поэтому Microsoft в конце концов решила сохранить историческое название System32 и разрешить ему хранить файлы, соответствующие собственной архитектуре операционной системы в 64-битной Windows. Для основной версии Windows 11 x64 это означает, что System32 хранит 64-разрядную версию системных компонентов, а 32-разрядную версию размещает в другом каталоге.

Этот каталог — SysWOW64.

WOW64 — это аббревиатура от «32-разрядная версия Windows в 64-разрядной версии Windows», которая представляет собой механизм совместимости для запуска 32-разрядных приложений Windows в 64-разрядной версии Windows. Число «64» в SysWOW64 относится к 64-битной среде Windows, в которой он находится, а не к тому, что сам файл является 64-битным. Другими словами, имя описывает платформу, на которую нацелен механизм совместимости, а не количество битов в двоичном файле в каталоге.

Старший инженер Microsoft Рэймонд Чен однажды объяснил в технической статье, что цифра «32» в System32 постепенно стала историческим наследием, точно так же, как названия некоторых брендов, даже если они больше не полностью отражают первоначальное значение, все равно сохранятся из-за длительного использования.

Если всю систему можно перепроектировать, он считает, что более идеальным именем каталога может быть что-то вроде SysExec, которое используется для хранения исполняемых файлов, соответствующих текущей архитектуре системы. Но Windows существует уже несколько десятилетий, а System32 уже давно является фиксированным путем, на который полагаются бесчисленные программы, поэтому потенциальные риски изменения имени намного перевешивают преимущества именования.

Помимо именования каталогов, 64-битная Windows также должна решить более практическую проблему: 32-битные программы не могут напрямую загружать 64-битные динамически подключаемые библиотеки, а 64-битные программы не могут напрямую загружать 32-битные динамически подключаемые библиотеки.

Например, kernel32.dll — важный системный компонент Windows. Файлы с одинаковым именем можно найти в System32 и SysWOW64, но они скомпилированы под разные архитектуры и просто поменять местами их нельзя. Когда Windows Latest проверила эти два каталога в системе Windows 11 26H2, она также обнаружила различия в размере соответствующих файлов.

Если 32-битная программа напрямую загружает 64-битную версию в System32, она может не работать из-за несовместимой двоичной архитектуры. Чтобы избежать этой ситуации, Windows представила перенаправитель файловой системы WOW64.

В 64-разрядной версии Windows, когда 32-разрядная программа пытается получить доступ к C:WindowsSystem32, система обычно автоматически перенаправляет запрос на доступ к C:WindowsSysWOW64. Этот процесс в основном прозрачен для самой программы, она по-прежнему думает, что обращается к System32, и операционная система незаметно находит для нее правильный 32-битный файл.

В официальной документации Microsoft четко указано, что каталог System32 в 64-битной Windows зарезервирован для 64-битных приложений, а WOW64 отвечает за перенаправление доступа 32-битных программ к некоторым системным путям в соответствующие 32-битные каталоги.

Этот механизм задействует не только системную библиотеку динамической компоновки, но также влияет на некоторые системные инструменты. Например, когда 32-разрядная программа обращается к определенным инструментам в каталоге Windows, она может быть перенаправлена ​​на соответствующую версию в SysWOW64. Это предотвращает неправильное использование 32-битными программами 64-битных инструментов или выполнение неверных операций, если архитектура операционной системы не соответствует.

Task-Manager-shows-that-Command-Prompt-runs-as-a-32-bit-process.jpg

WOW64 также решает проблемы совместимости, такие как доступ к реестру и пути установки программ. Для 32-разрядных приложений Windows может предоставить отдельный вид реестра, обычное расположение — HKEY_LOCAL_MACHINESoftwareWow6432Node. Система также обычно указывает путь к Program Files 32-битных программ к C:Program Files (x86), так что программным обеспечением разных архитектур можно управлять, насколько это возможно, отдельно.

Вместе эти механизмы составляют часть системы совместимости Windows, позволяющей большому количеству программного обеспечения, написанного для ранних 32-разрядных версий Windows, по-прежнему работать в 64-разрядной Windows 11, без необходимости переписывать весь код для каждой старой программы.

Однако перенаправление файловой системы также может привести к некоторым ситуациям, которые могут легко запутать разработчиков.

Например, 32-битная командная строка и 64-битная командная строка, даже если они используют, казалось бы, одинаковый путь для доступа к C:WindowsSystem32kernel32.dll, фактические полученные файлы могут отличаться. Первый обычно перенаправляется на SysWOW64, а второй обращается напрямую к System32.

Мэтт Питрек, бывший член команды Microsoft Visual Studio, упомянул в технической статье, что он также потратил время на устранение проблемы, поскольку получал запутанные результаты, когда 32-битная командная строка перечисляла файлы с одинаковыми именами в двух каталогах. Это показывает, что, хотя перенаправление файловой системы может поддерживать совместимость программного обеспечения, оно также усложняет работу по отладке и разработке системы.

Для решения некоторых особых ситуаций Microsoft также предоставляет виртуальный путь под названием Sysnative. Если 32-битной программе действительно необходим доступ к собственному каталогу System32 64-битной Windows, она может использовать C:WindowsSysnative, чтобы обойти обычное перенаправление файловой системы.

Следует отметить, что Sysnative — это не настоящая папка на диске, а псевдоним пути, специально предусмотренный Windows. 64-битные приложения не могут использовать этот псевдоним, как 32-битные программы, поэтому, когда пользователи ищут Sysnative непосредственно в проводнике, они могут обнаружить, что система сообщает, что путь не существует.

32-bit-apps-get-their-own-registry-view-under-WOW6432Node-on-Windows-11.jpg

Microsoft также перечисляет ряд подкаталогов System32, на которые не влияет обычное перенаправление файловой системы, в том числе:

C:WindowsSystem32catroot

C:WindowsSystem32catroot2

C:WindowsSystem32driverstore

C:WindowsSystem32drivesetc

C:WindowsSystem32logfiles

C:WindowsSystem32spool

Эти каталоги выполняют такие функции, как каталоги системных компонентов, хранилище драйверов, файлы конфигурации сети, ведение журнала и печать. В документации Microsoft четко перечислены эти пути исключений, но не содержится единого объяснения конкретных причин разработки каждого исключения. Windows Latest считает, что некоторые из этих каталогов могут содержать данные, к которым программы с разными архитектурами должны иметь совместный доступ, например файл hosts в driversetc.

В дополнение к платформе x64 механизм совместимости Windows с архитектурой Arm также имеет аналогичную многокаталогическую конструкцию.

В некоторых ранних системах Windows on Arm 32-разрядные программы x86 используют SysWOW64, тогда как 32-разрядные программы Arm могут получать доступ к соответствующим компонентам системы через SysArm32. Поскольку платформе Arm приходится решать проблемы совместимости между различными архитектурами набора команд, Windows также использует соответствующие механизмы моделирования и преобразования.

Однако в последней документации Microsoft по разработке Arm говорится, что Windows on Arm больше не будет поддерживать 32-разрядные приложения Arm, а соответствующие системные двоичные файлы также будут удалены из каталога SysArm32. В то же время обычные приложения x86 по-прежнему могут работать через механизм совместимости, а некоторые программы x86 поддерживаются технологией эмуляции Prism.

Sysnative-only-works-for-32-bit-apps-so-64-bit-File-Explorer-cant-find-it.jpg

Это также показывает, что система совместимости Windows не является полностью статичной. По мере изменения аппаратных платформ и программных экосистем Microsoft по-прежнему будет постепенно отказываться от поддержки некоторых старых архитектур, но для приложений, которые все еще широко используются, компания постарается максимально сохранить совместимость.

С технической точки зрения именование System32 и SysWOW64 действительно недостаточно интуитивно понятно. Для обычных пользователей естественно думать, что 64-битные файлы хранятся в каталоге, когда они видят «64». Но в Windows имена каталогов отражают историю, а не набор правил, разработанных с нуля, чтобы следовать интуиции.

Основной причиной, по которой Microsoft не просто переименовала эти два каталога, была совместимость. Windows необходимо запускать множество устаревшего программного обеспечения, и эти программы могут использовать фиксированные пути, устаревшие системные интерфейсы и определенные макеты двоичных файлов. Необдуманное изменение этих инфраструктур может привести к сбоям при установке программного обеспечения, сбоям в работе системных инструментов и даже повлиять на бизнес-процессы, основанные на старых компонентах.

Поэтому Microsoft решила решить проблему с помощью таких механизмов, как перенаправление файловой системы, перенаправление реестра и виртуальные пути, а не полностью перестраивать систему именования каталогов.

Этот дизайн не идеален, но он отражает важное различие в пути развития Windows и других операционных систем: Windows всегда необходимо находить баланс между постоянной модернизацией и совместимостью с программным обеспечением, созданным десятилетиями. Казалось бы, перевернутые имена System32 и SysWOW64 — типичный след, оставленный этой долгосрочной стратегией совместимости.

Связанные теги

Похожие статьи

Комментарии

0/500
Captcha (click to refresh)
Нет комментариев