Для получения триального ключа
заполните форму ниже
Team license
Enterprise license
** Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

Запросите информацию о ценах
Новая лицензия
Продление лицензии
--Выберите валюту--
USD
EUR
RUB
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

Бесплатная лицензия PVS-Studio для специалистов Microsoft MVP
** Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

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

Мне интересно попробовать плагин на:
** Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

Ваше сообщение отправлено.

Мы ответим вам на


Если вы так и не получили ответ, пожалуйста, проверьте папку
Spam/Junk и нажмите на письме кнопку "Не спам".
Так Вы не пропустите ответы от нашей команды.

>
>
Почему происходит замещение значения пе…

Почему происходит замещение значения переменной среды ProgramFiles на ProgramFiles(x86) ?

23 Янв 2012

Почему происходит замещение значения переменной среды %ProgramFiles% на %ProgramFiles(x86)% при доступе к ней из 32-разрядной программы, запущенной в 64-разрядной ОС?

При обращении 32-разрядного приложения, запущенного в 64-разрядной версии Windows, к системным переменным среды %ProgramFiles% или %commonprogramfiles%, подсистема WoW64 производит замещение значений данных переменных на значения переменных %ProgramFiles(x86)% и "%commonprogramfiles(x86)%. Так например %ProgramFiles% будет раскрыто как "C:\Program Files (x86)" при обращении из 32-битной программы.

Такое поведение связано с работой системы перенаправления реестра, которая обеспечивает обратную совместимость 32-битного ПО с 64-разрядными ОС. Для 32-битных программ создаётся видимость 32-битного окружения, даже несмотря на то, что данные, к которым они обращаются, находятся в другом месте.

Для предотвращения такого перенаправления в 32-битной программе необходимо использовать переменные среды %programfiles% или %COMMONPROGRAMFILES% (т.е. с обращённым регистром) или использовать флаг KEY_WOW64_64KEY при доступе к соответствующим узлам реестра.

Для полного отключения перенаправления файловой системы в заданном потоке существуют функции Wow64DisableWow64FsRedirection / Wow64RevertWow64FsRedirection, однако их использование в большинстве случаев создаёт проблемы с неявными вызовами и отложенной загрузкой библиотек. Разработчик очень редко полностью контролирует весь ввод-вывод на участке между Wow64DisableWow64FsRedirection и Wow64RevertWow64FsRedirection и если в тот момент, когда перенаправление отключено, произойдёт неявная загрузка кода, 32-битное приложение с большой вероятностью не сможет получить нужную версию библиотеки. Алексей Пахунов, один из разработчиков WoW64, советует применять данную пару функций только для оборачивания вызова функции CreateFile.

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

Популярные статьи по теме
В macOS 10.15 более не поддерживаются 32-битные приложения. Что вы можете сделать?

Дата: 15 Окт 2019

Автор: Сергей Хренов

7 октября 2019 года Apple выпустила в свет новую версию своей операционной системы для Mac, macOS Catalina. Версия 10.15 содержит множество изменений и улучшений. Одно из значимых – полный отказ от 3…
Простая ошибка при кодировании - не значит нестрашная ошибка

Дата: 19 Апр 2017

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

Популяризируя статический анализатор кода PVS-Studio, мы обычно пишем статьи для программистов. Однако, на некоторые вещи программисты смотрят одностороннее. Именно поэтому и существуют менеджеры про…
Как обнаружить переполнение 32-битных переменных в длинных циклах в 64-битной программе?

Дата: 22 Мар 2016

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

Одна из проблем, с которой сталкиваются разработчики 64-битных приложений, это переполнение 32-битных переменных в очень длинных циклах. С этой задачей хорошо справляется анализатор кода PVS-Studio (…
Возможен ли запуск 64-битных приложений в 32-битной операционной системе?

Дата: 08 Дек 2015

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

В настоящее время широко распространены 64-битные ОС [1]. Но и 32-битные ОС еще присутствуют на рынке в достаточно большом количестве. Многие современные программные средства разрабатываются исключит…
Как перенести проект размером в 9 млн строк кода на 64-битную платформу?

Дата: 03 Авг 2015

Автор: Евгений Рыжков, Илья Иванов

Недавно наша команда завершила миграцию на 64-битную платформу довольного большого проекта (9 млн строк кода, 300Mb исходников). Проект занял полтора года. Хотя в силу NDA мы не можем привести назван…

Комментарии (0)

Следующие комментарии
Unicorn with delicious cookie
Мы используем куки, чтобы пользоваться сайтом было удобно. Хотите узнать подробнее?
Принять