>
>
Почему Windows помещает 64-битные модул…

Андрей Карпов
Статей: 643

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

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

Алексей Пахунов, сотрудник Microsoft участвовавший в создании WoW64, в своём блоге пишет, что такой путь был выбран для упрощения переноса приложений на 64-битную платформу. Имена ключей реестра и названия каталогов, которые использует приложение, очень часто хранятся в виде текстовых констант в коде программы, несмотря на то, что путь к большинству системных каталогов можно (и нужно) получать с помощью функций GetSystemDirectory, GetWindowsDirectory и т.п. При перекомпиляции существующего приложения для 64-разрядной платформы эти текстовые константы останутся неизменными. И поскольку простой перекомпиляции обычно не достаточно для перехода на 64-битную платформу (проявляются ошибки, связанные с неточным следованием рекомендациям Microsoft по использованию Windows API), Microsoft постаралась сделать этот переход как можно менее болезненным, избавив программистов от необходимости поиска и замены множества строковых констант во всех портируемых приложениях.

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