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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.07.2012, 18:30   #1
Raf-9600
Пользователь
 
Регистрация: 10.07.2012
Сообщений: 34
Лампочка Delphi доступ к x64 ветке реестра из x86 проги

Собсно нужно читать\експортировать\записывать значения не в HKLM\SOFTWARE\Wow6432Node а в HKLM\SOFTWARE\ при том что у меня x86 прога. Как это реализовать?

Использую Delphi 7

Последний раз редактировалось Raf-9600; 18.07.2012 в 19:25.
Raf-9600 вне форума Ответить с цитированием
Старый 18.07.2012, 18:33   #2
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,120
По умолчанию

гоогле KEY_WOW64_64KEY
Rififi вне форума Ответить с цитированием
Старый 18.07.2012, 19:19   #3
Raf-9600
Пользователь
 
Регистрация: 10.07.2012
Сообщений: 34
Восклицание Нубский вопрос

Цитата:
Сообщение от Rififi Посмотреть сообщение
гоогле KEY_WOW64_64KEY
Тогда ещё такой вопрос: Как его правильно прописывать при работе с TRegIniFile?
Код:
RegHKLM:=TRegIniFile.Create();
RegHKLM.RootKey:=HKEY_LOCAL_MACHINE;
В гугле нашёл пример
Код:
RegHKLM.Access := KEY_WOW64_64KEY or KEY_ALL_ACCESS;
но он не канает.

Последний раз редактировалось Raf-9600; 18.07.2012 в 19:26.
Raf-9600 вне форума Ответить с цитированием
Старый 18.07.2012, 22:57   #4
Raf-9600
Пользователь
 
Регистрация: 10.07.2012
Сообщений: 34
По умолчанию

Что я делаю не так? Попробовал так, но не получаеться

Код:
var
  RegHKLM: TRegIniFile;
  D2RegFolder: string;

begin
RegHKLM:=TRegIniFile.Create(KEY_WOW64_64KEY or KEY_ALL_ACCESS);
RegHKLM.Access := KEY_WOW64_64KEY or KEY_ALL_ACCESS;
RegHKLM.RootKey:=HKEY_LOCAL_MACHINE;

D2RegFolder:='Software\Blizzard Entertainment\Diablo II';
RegHKLM.WriteString(D2RegFolder,'DiabloIICD',D2Folder);
Уже понял. Я пренебрёг некоторыми правилами...

Последний раз редактировалось Raf-9600; 18.07.2012 в 23:11.
Raf-9600 вне форума Ответить с цитированием
Старый 18.07.2012, 23:52   #5
Raf-9600
Пользователь
 
Регистрация: 10.07.2012
Сообщений: 34
По умолчанию

Появилась другая пролема: чтобы записывать ключи в DWord формате я использую специальную функцию:

Код:
procedure TForm1.WriteDWord(rootKey: hKey; subkey: string; ValueName: string; Value: DWord);
Var
Key: hKey;
DataType: integer;
begin
if RegOpenKey(rootKey, PChar(subkey), Key)<>ERROR_SUCCESS
then RegCreateKey(rootKey, PChar(subkey), Key);
DataType:=REG_DWORD;
RegSetValueEx(key, PChar(ValueName), 0, DataType, PChar(@Value), SizeOf(DWORD));
RegCloseKey(Key);
end;
И соответственно использую её так:
Код:
WriteDWord(HKEY_CURRENT_USER, 'Software\Blizzard Entertainment\Diablo II\VideoConfig', 'DeviceDDraw', 0);
Вопрос: как сделать чтобы в данной ситуации ключ записывался в x64 ветку реестра?
Raf-9600 вне форума Ответить с цитированием
Старый 19.07.2012, 13:25   #6
*PB*
Форумчанин
 
Регистрация: 11.08.2009
Сообщений: 558
По умолчанию

А не проще будет написать x64 приложение, которое это сделает без извата?
Его можно будет запускать из вашей x86 программы.
*PB* вне форума Ответить с цитированием
Старый 19.07.2012, 13:29   #7
Raf-9600
Пользователь
 
Регистрация: 10.07.2012
Сообщений: 34
По умолчанию

x64 прога в x86 проге это не изврат? О_о
Конкретно свой предыдущий вопрос решил тем что в функции заменил
Код:
if RegOpenKey(rootKey, PChar(subkey), Key)<>ERROR_SUCCESS
на
Код:
if RegOpenKeyEx(rootKey, PChar(subkey), 0, KEY_WOW64_64KEY or KEY_ALL_ACCESS, Key)<>ERROR_SUCCESS
Raf-9600 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Системный программист - разработчик C/C++ (платформа Windows x86/x64) api_soft Фриланс 1 16.02.2012 12:06
Доступ к разделам реестра hotaimbat Безопасность, Шифрование 1 10.02.2012 05:03
Win7 x64 и Win7 x86, возможно ли? Пепел Феникса Операционные системы общие вопросы 9 11.12.2011 14:09
Разрядность ОСи x86/x64 Veiron Win Api 11 13.12.2010 17:26
Переписать программку с x86 под x64 PnG Фриланс 6 02.11.2009 11:24