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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2011, 15:39   #1
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию Запись REG_BINARY данных в реестр

Доброго врем времени!

Имеется реестр.
Вот с такими данными(изначально):
Код:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Render\{b099b4dd-152c-43b4-97d6-a896fc1576bb}]
"Role:0"=hex:db,07,05,00,01,00,10,00,0b,00,0c,00,03,00,b8,03
"Role:1"=hex:db,07,05,00,01,00,10,00,0b,00,0c,00,03,00,b8,03
"Role:2"=hex:db,07,05,00,01,00,10,00,0b,00,0c,00,03,00,b8,03

копал форум. Нашёл немного полезностей.
И в результате замутил такой код:
Код:
procedure TForm1.Button1Click(Sender: TObject);
const
  Role0:array[1..15] of Byte = ($07,$05,$00,$01,$00,$10,$00,$0b,$00,$05,$00,$1f,$00,$93,$02);
  Role1:array[1..15] of Byte = ($07,$05,$00,$01,$00,$10,$00,$0b,$00,$05,$00,$1f,$00,$93,$02);
  Role2:array[1..15] of Byte = ($07,$05,$00,$01,$00,$10,$00,$0b,$00,$01,$00,$34,$00,$e2,$01);
  regDataPath='SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Render\{b099b4dd-152c-43b4-97d6-a896fc1576bb}';
var
  Reg:TRegistry;
  RegPath:string;
  Buf:array[0..14] of Byte;
  i:Integer;
begin
  Reg:=TRegistry.Create;
  try
  Reg.RootKey:=HKEY_LOCAL_MACHINE;
  RegPath:=regDataPath;
  if not Reg.OpenKeyReadOnly(RegPath) then
  begin
  ShowMessage('Не найдена указанная верка реестра!');
  end else
  begin
    for i:=0 to 14 do
    begin
    Buf[i]:=Role0[i+1];
    end;
   Reg.WriteBinaryData('Role:0',Buf,SizeOf(Buf));
  end;
  finally
  Reg.CloseKey;
  FreeAndNil(Reg);
  end;
end;
Но выбивает ошибку: Failed to set data for "Role:0"

Как быть?
Человек_Борща вне форума Ответить с цитированием
Старый 16.05.2011, 23:05   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Поможет кто? Или никто никогда бинарные данные в реестр не писал?
Человек_Борща вне форума Ответить с цитированием
Старый 17.05.2011, 02:01   #3
maxionans
Форумчанин
 
Аватар для maxionans
 
Регистрация: 02.01.2010
Сообщений: 254
По умолчанию

может быть прав не хватает для записи?
maxionans вне форума Ответить с цитированием
Старый 17.05.2011, 02:08   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Прав достаточноПолный адм. доступ).
Человек_Борща вне форума Ответить с цитированием
Старый 17.05.2011, 02:41   #5
maxionans
Форумчанин
 
Аватар для maxionans
 
Регистрация: 02.01.2010
Сообщений: 254
По умолчанию

ну а какой-нибудь код ошибки показывает? и получается ли записать туда же, например, String?
maxionans вне форума Ответить с цитированием
Старый 17.05.2011, 02:47   #6
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

Может стоит открыть ключ не только для чтения?
Код:
if not Reg.OpenKeyReadOnly(RegPath) then
Баламут вне форума Ответить с цитированием
Старый 17.05.2011, 08:34   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Баламут, супер!

вместо этого достаточно
Код:
  if not Reg.OpenKey(RegPath, False) then ...

я тоже вчера минут десять дёргал код и безуспешно!
Но очевидного не заметил!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.05.2011, 09:46   #8
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

Да ладно уж...
Просто код своего редактора реестра еще свеж в памяти...
Баламут вне форума Ответить с цитированием
Старый 17.05.2011, 10:58   #9
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Аа блин.. может не пишет потому что открыл ключ только только для чтения..?
Думаю сегодня попробую просто Reg.OpenKey('',false) может что-то и получится.
Человек_Борща вне форума Ответить с цитированием
Старый 17.05.2011, 21:16   #10
volod3000
Форумчанин
 
Аватар для volod3000
 
Регистрация: 18.12.2008
Сообщений: 266
По умолчанию

Вот похожая тема , может поможет .

Мало открыть человеку глаза, большинство еще просит указать дорогу и ждет волшебного пенделя.
volod3000 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись в реестр dmitriegorovih Общие вопросы Delphi 6 26.02.2011 14:39
Запись в реестр. Кристинка89 Общие вопросы Delphi 9 10.02.2011 15:50
Запись в реестр zotox Win Api 7 31.10.2010 21:36
Запись в реестр arxidevill Общие вопросы Delphi 4 13.05.2010 00:29