to the top
close form

Заполните форму в два простых шага ниже:

Ваши контактные данные:

Шаг 1
Поздравляем! У вас есть промокод!

Тип желаемой лицензии:

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

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

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

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

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

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


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

>
>
WOW6432Node и API-функции RegOpenKeyEx …

WOW6432Node и API-функции RegOpenKeyEx / RegEnumKeyEx

24 Янв 2011

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

Такое поведение приводит к проблемам в тех случаях, когда 32-разрядные приложения пытаются обратиться к узлу WOW6432Node с помощью функций Windows API (например RegOpenKeyEx и RegEnumKeyEx). При обращении к узлу HKLM\Software\Wow6432Node происходит перенаправление и возникает бесконечная петля вида HKLM\Software\Wow6432Node\Wow6432Node\Wow6432Node\... и т.д. С подобными ошибками часто можно столкнуться в различных 32-битных утилитах для работы с реестром, как например, здесь.

Начиная с Windows Server 2008 узел HKLM\Software\Wow6432Node скрыт от функции RegEnumKeyEx, что правда не гарантирует отсутствия бесконечной рекурсии при попытке прямого доступа к нему.

Если же вы хотите работать с 64-битными разделами реестра из 32-битной программы, то вам следует открывать узел HKLM\Software используя ключ KEY_WOW64_64KEY. Но не пытайтесь получить доступ напрямую к WOW6432Node и избегайте создания новых узлов реестра с таким именем.

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

lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
  "SOFTWARE\\ODBC\\ODBC.INI\\ODBC Data Sources", 0,
  KEY_QUERY_VALUE,  &hKey);

Чтобы подружить эту программу с другими 64-битными частями, необходимо вписать ключ KEY_WOW64_64KEY:

lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
  "SOFTWARE\\ODBC\\ODBC.INI\\ODBC Data Sources", 0,
  KEY_QUERY_VALUE | KEY_WOW64_64KEY,  &hKey);

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

Популярные статьи по теме
64-битные ошибки: LONG, LONG_PTR и привет из прошлого

Дата: 09 Мар 2023

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

В целом, 64-битные ошибки - дело минувших дней. Мало кто сейчас занимается портированием кода с 32-битной на 64-битную систему. Кому это было нужно, уже портировали свои приложения. Кому не нужно, то…
В 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-битные ОС еще присутствуют на рынке в достаточно большом количестве. Многие современные программные средства разрабатываются исключит…


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

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