Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.06.2017, 23:34   #1
Rockot
Форумчанин
 
Аватар для Rockot
 
Регистрация: 01.06.2012
Сообщений: 139
По умолчанию Реестр делфи x64

Доброго всем вечера. Подскажите пожалуйста, в чём проблема, работаю я под Windows 10 x64, приложение компилирую для 32-х битной архитектуры.

Задача - прочесть ветку реестра "Компьютер\HKEY_LOCAL_MACHINE\SOFTW ARE\Mozilla\Mozilla Firefox" для получения пути.

При попытке чтения наткнулся на такую особенность, выполняя функцию OpenKey с параметром False ( не создавать ветку при её отсутствии ) он кричит о том, что данная ветка отсутствует собственно Result функции равен False.

Что я сделал, я попробовал создать по данному пути свой каталог ( код ниже ).
Цитата:
var
FFVer: String; // HKEY_LOCAL_MACHINE
Reg: TRegistry;
begin
Reg := TRegistry.Create;
Reg.RootKey := HKEY_LOCAL_MACHINE;
if Reg.OpenKey('\SOFTWARE\Mozilla\Main tenanceService1', True) then
Reg.WriteString('12354Firefox', 'rackot');
Reg.Free;
end;
Так вот при выполнении данного кода я прохожу не по тому пути:
Мой - \SOFTWARE\Mozilla\Mozilla Firefox
Попадаю в - \SOFTWARE\WOW6432Node\Mozilla\Mozil la Firefox

Разница очевидна - нужен простой каталог "SOFTWARE", а попадаю в "WOW6432Node"

Как это возможно и в чём проблема?
Следствие: 99% проблем, сваливаемых на Microsoft, является следствием тупости самих программистов.
Rockot вне форума Ответить с цитированием
Старый 12.06.2017, 23:48   #2
Rockot
Форумчанин
 
Аватар для Rockot
 
Регистрация: 01.06.2012
Сообщений: 139
По умолчанию Решил проблему пусть останется как пример

Цитата:
const
KEY_WOW64_64KEY = $0100;
var
FFVer: String; // HKEY_LOCAL_MACHINE
Reg: TRegistry;
begin
Reg := TRegistry.Create;
Reg.RootKey := HKEY_LOCAL_MACHINE;
Reg.Access := KEY_WOW64_64KEY or KEY_ALL_ACCESS;
if Reg.OpenKey('\SOFTWARE\Mozilla\Main tenanceService2', True) then
Reg.WriteString('12354Firefox', 'rackot');
Reg.Free;
end;
Требуется определить права - KEY_WOW64_64KEY or KEY_ALL_ACCESS
KEY_WOW64_64KEY описать как константу.

В общем кто захочет тот поймёт. Если решение не верно Welcom.
Следствие: 99% проблем, сваливаемых на Microsoft, является следствием тупости самих программистов.
Rockot вне форума Ответить с цитированием
Старый 13.06.2017, 00:14   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

KEY_WOW64_64KEY не права, а флаг. Вы только узнали о редиректе реестра для 32битных процессов в 64битных системах?.. Заодно можете погуглить про редирект в файловой системе.
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
реестр windows xp x64 bit в delphi tj.nelson Общие вопросы Delphi 1 14.03.2012 05:20
Запись в реестр из reg файла в windows 7 x64 Алексей_C Общие вопросы Delphi 8 20.02.2011 07:43
Реестр в Делфи Alex2009 Помощь студентам 7 12.03.2010 01:20
Реестр в x64 Xatr Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 9 17.01.2010 04:00
Реестр в Делфи Гребенюк Иван Общие вопросы Delphi 8 15.08.2009 13:24