Tregistry Writebinarydata и Readbinarydata

  • Автор темы Автор темы omezik
  • Дата начала Дата начала
O

omezik

Нужно считать а потом записать данные из реестра с помощью TRegistry и методами WriteBinaryData(значение, буфер, кол-во символов в буфере) и ReadBinaryData (значение, буфер, кол-во символов в буфере)
Написал две функций:

Код:
//Функция для считывание бинарных значений из реестра (передать переменные с путем и параметром реестра)
int reg_reading_bin(AnsiString root, AnsiString dur, AnsiString name)
{ TRegistry *reg = new TRegistry(KEY_ALL_ACCESS);
// выбираем нужный корень
reg->RootKey = GetPViodFromStrKey(root);
// открываем секцию
reg->OpenKey(dur.c_str(), true);
// Если ветка существует, то
if (reg->ValueExists(name))
{
int znachenie;
int binarydat;
reg->ReadBinaryData(name, &binarydat,sizeof(DWord));
znachenie = binarydat;
// закрываем секцию
//reg->CloseKey();
//Возвращаем значение функций
return (znachenie);}
}


//Функция для сохранения бинарных значений из реестра (передать переменные с путем и параметром реестра)
DWord reg_save_bin(AnsiString root, AnsiString dur, AnsiString name, AnsiString znachenie)
{ TRegistry *reg = new TRegistry(KEY_ALL_ACCESS);
// выбираем нужный корень
reg->RootKey = GetPViodFromStrKey(root);
// открываем секцию
reg->OpenKey(dur.c_str(), true);
// Если ветка существует, то
if (reg->ValueExists(name))
{
DWord binarydat = znachenie[1];
reg->WriteBinaryData(name, &binarydat,sizeof(DWord));
//Возвращаем значение функций
return (binarydat);}
}

вызываю и записываю следующими деиствиями
Код:
//запись
AnsiString a25 = "HKEY_LOCAL_MACHINE";
AnsiString b25 = "SYSTEM\\CurrentControlSet\\Control\\FileSystem\\CDFS";
AnsiString c25 = "CacheSize";
int d25;
bool e25;
e25 = CheckBox25->Checked;
if (e25 == true) {d25 = 00;} else {d25 = 0;}
reg_save_bin (a25,b25,c25,d25);

//чтение
AnsiString a25 = "HKEY_LOCAL_MACHINE";
AnsiString b25 = "SYSTEM\\CurrentControlSet\\Control\\FileSystem\\CDFS";
AnsiString c25 = "CacheSize";
AnsiString t25;
t25 = reg_reading_bin (a25,b25,c25);
ShowMessage (t25);

Не пойму как правильно сделать, полученный результат чтения из реестра присваиваю переменной и пытаюсь опять записать тудаже было например ff 00 00 00 после чтения присвоился результат 255 его записываю а получаю 35 00 00 00 в реестре в чем дело помогите если кто понимает в этом лутше меня может я буфер не правильно использую, заранее спасибо за помощь!
 
Блин написал на трех сайтах ни кто помочь не может неужели ни кто не сталкивался с такой проблемой
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!