C++Builder
  Начало   Форум   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Косяк с TRegisrty  (Прочитано 2077 раз)
POV
Участник
**

Сказали спасибо: +107/-7
Offline Offline

Сообщений: 640


« : 07 июня 2016, 14:43:01 »

Файлом *.reg создал ветку и параметр туда  внёс. А читать не получается, т.к. билдер желает лезть по другому пути.
Мой путь HKEY_LOCAL_MACHINE\SOFTWARE\POV
а билдер желает HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\POV

выяснил заменив regKey->OpenKeyReadOnly("SOFTWARE\\POV") на regKey->OpenKey("SOFTWARE\\POV", true) - ветка создалась именно после Wow6432Node

Как победить?
Записан
Valdemar
Давний друг
**

Сказали спасибо: +60/-4
Offline Offline

Сообщений: 285


« Ответ #1 : 16 июня 2016, 08:46:24 »

Если приложение x86 работает на x64 ОС, то при обращении к ветке реестра HKEY_LOCAL_MACHINE\SOFTWARE\ оно перенаправляется в ветку HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\, предназначенную для приложений x86.
Если надо работать с веткой реестра для 64-х битных приложений из 32-х битного приложения, то надо указать
Registry := TRegistry.Create(KEY_WRITE OR KEY_WOW64_64KEY)
Дополнительную информацию можно посмотреть здесь:
https://msdn.microsoft.com/en-us/library/ms724878(v=vs.85).aspx
https://msdn.microsoft.com/en-us/library/aa384253(v=vs.85).aspx
Записан
POV
Участник
**

Сказали спасибо: +107/-7
Offline Offline

Сообщений: 640


« Ответ #2 : 16 июня 2016, 09:23:21 »

Это я уже выяснил.. но ветку создаю файлом *.reg
Он знать не знает про Wow6432Node  ((

Как быть?
Записан
Rius
Давний друг
**

Сказали спасибо: +116/-5
Offline Offline

Сообщений: 753


WWW
« Ответ #3 : 17 июня 2016, 06:45:11 »

Создать свою ветку в HKCU, тогда разрядность будет не важна?
Записан
POV
Участник
**

Сказали спасибо: +107/-7
Offline Offline

Сообщений: 640


« Ответ #4 : 17 июня 2016, 08:21:17 »

В юзере всё работает. Хотел именно в локал машин.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в: