Я пишу приложение на C ++, которое читает реестр Windows, но у меня возникают некоторые проблемы при доступе к общим ключам (http://msdn.microsoft.com/en-us/library/aa384253(v=vs.85).aspx).
Например, если у вас есть какая-либо Windows x64 (здесь XP для вашей информации), вы можете запустить 64-битный Regedit и указать на этот ключ:
HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Setup
Вы увидите несколько значений справа. Но если вы откроете виртуальный один и тот же ключ (т.е. без Wow6432Node
part) с помощью regedit32
(c:\windows\SysWOW64\regedt32.exe
), вы увидите больше значений справа, и это происходит потому, что в этом случае (т.е. общий ключ) 32 битовые приложения могут получать общую информацию из 64-битного куста реестра.
Проблема заключается в том, что я хочу перечислить только реальные 32-битные значения из этого ключа (и других общих ключей), другими словами, мне нужна та же информация, что 64-битный Regedit сообщает мне, когда я смотрю на ключ выше.
Я пытался получить доступ к этому ключу как с частью Wow6432Node
, так и без нее, а также с и без флага KEY_WOW64_32KEY
внутри вызова функции RegOpenKeyEx
. Нет успеха; Я всегда получаю 32- и 64-битные значения.
Есть идеи?