﻿# Почему Windows помещает 64\-битные модули в System32?

Подсистема WoW64 \(Windows on Windows 64\) использует перенаправление реестра и файловой системы для 32\-битных программ, запущенных в 64\-разрядных версиях Windows, а 64\-битные системные библиотеки по\-прежнему хранятся в каталоге "%windir%\\system32"\. С чем же связано подобное положение, ведь более логично было бы закрепить за 32\-битными программами путь "%windir%\\system32", а для 64\-битных использовать, скажем, "%windir%\\system64"?

Алексей Пахунов, сотрудник Microsoft участвовавший в создании WoW64, в своём блоге [пишет](https://blog.not-a-kernel-guy.com/2007/06/26/203/), что такой путь был выбран для упрощения переноса приложений на 64\-битную платформу\. Имена ключей реестра и названия каталогов, которые использует приложение, очень часто хранятся в виде текстовых констант в коде программы, несмотря на то, что путь к большинству системных каталогов можно \(и нужно\) получать с помощью функций GetSystemDirectory, GetWindowsDirectory и т\.п\. При перекомпиляции существующего приложения для 64\-разрядной платформы эти текстовые константы останутся неизменными\. И поскольку простой перекомпиляции обычно не достаточно для перехода на 64\-битную платформу \(проявляются [ошибки](https://pvs-studio.ru/ru/blog/lessons/0006/), связанные с неточным следованием рекомендациям Microsoft по использованию Windows API\), Microsoft постаралась сделать этот переход как можно менее болезненным, избавив программистов от необходимости поиска и замены множества строковых констант во всех портируемых приложениях\.

## Библиографический список

1. Алексей Пахунов\. [Почему Wow64 использует перенаправление реестра и файловой системы?](https://blog.not-a-kernel-guy.com/2007/06/26/203/)
1. BrandonLive\. [Why does Windows put 64\-bit binaries in System32?](http://brandonlive.com/2008/12/22/why-does-windows-put-64-bit-binaries-in-system32/)