Как не читать общие данные на общих ключах в реестре Windows?C ++ - PullRequest
0 голосов
/ 21 мая 2011

Я пишу приложение на 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-битные значения.

Есть идеи?

...