Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 18.07.2012, 18:30   #1
Raf-9600
Пользователь
 
Регистрация: 10.07.2012
Сообщений: 34
Репутация: 10
Лампочка 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
Репутация: 866
По умолчанию

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

Цитата:
Сообщение от 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
Репутация: 10
По умолчанию

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

Код:

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
Репутация: 10
По умолчанию

Появилась другая пролема: чтобы записывать ключи в 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
Сообщений: 556
Репутация: 226
По умолчанию

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

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 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Системный программист - разработчик 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 18:26
Переписать программку с x86 под x64 PnG Фриланс 6 02.11.2009 12:24


16:32.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru