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

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

Подсистема 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 постаралась сделать этот переход как можно менее болезненным, избавив программистов от необходимости поиска и замены множества строковых констант во всех портируемых приложениях.

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



Найдите ошибки в своем C, C++, C# и Java коде

Предлагаем попробовать проверить код вашего проекта с помощью анализатора кода PVS-Studio. Одна найденная в нём ошибка скажет вам о пользе методологии статического анализа кода больше, чем десяток статей.

goto PVS-Studio;

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


Найденные ошибки

Проверено проектов
411
Собрано ошибок
14 123

А ты совершаешь ошибки в коде?

Проверь с помощью
PVS-Studio

Статический анализ
кода для C, C++, C#
и Java

goto PVS-Studio;
Этот сайт использует куки и другие технологии, чтобы предоставить вам более персонализированный опыт. Продолжая просмотр страниц нашего веб-сайта, вы принимаете условия использования этих файлов. Если вы не хотите, чтобы ваши данные обрабатывались, пожалуйста, покиньте данный сайт. Подробнее →
Принять