Страница 1 из 1

TRegistry.ReadBinaryData - как правильно пользоваться?

Добавлено: 12 апр 2009, 15:25
Dr_Grizzly
Всем привет! Такая вот проблемка, не могу прочитать значение параметра из реестра с типом REG_DWORD.....

Какое значение нужно указать в функции ReadBinaryData в переменной Buffer и BufSize???

Заранее благодарен ;)

Re: TRegistry.ReadBinaryData - как правильно пользоваться?

Добавлено: 13 апр 2009, 10:55
Игорь Акопян
DWORD = 32-bit unsigned integer. 4 байта соответственно
--------------------------------------------------------------------------------
Добавленное сообщение
--------------------------------------------------------------------------------
только не понятно, зачем для чтения целого числа использовать ReadBinaryData если есть ReadInteger?

Re: TRegistry.ReadBinaryData - как правильно пользоваться?

Добавлено: 13 апр 2009, 17:16
Dr_Grizzly
Ну вот! Точняк, что-то у меня не получалось до этого, наверное потомучто использовал strtofloat() а не strtoint(). Ща попробовал еще раз, и получилось получить данные через ReadInteger... Благодарю!

Вот код кому интересно:

Код: Выделить всё

Function Regedit(RootKey:Integer; Path:String='Îáÿçàòåëüíî'; CanCreat:boolean=false;WrString:String=''; Value:String=''; RdString:String=''; CanDelete:boolean=false; Allparam:boolean=false;AllKey:boolean=false):String;
var
Reg: TRegistry;
Val: TStringList;
begin
Reg:=TRegistry.Create;
try
Val:=TstringList.Create;
try
Case Rootkey of
1:Reg.RootKey:=HKEY_CURRENT_USER;
2:Reg.RootKey:=HKEY_LOCAL_MACHINE;
3:Reg.RootKey:=HKEY_CLASSES_ROOT;
4:Reg.RootKey:=HKEY_USERS;
5:Reg.RootKey:=HKEY_CURRENT_CONFIG
else
Reg.RootKey:=HKEY_CURRENT_USER;
end;

Reg.OpenKey(Path,CanCreat);
begin
Reg.GetValueNames(Val);

If WrString<>'' then
begin
 If (reg.GetDataType(WrString)=rdInteger) or(reg.GetDataType(WrString)=rdBinary ) then
   Reg.WriteInteger(WrString,StrToInt(Value))
  else
   Reg.WriteString(WrString,Value);
Regedit:='Ïðîèçâåäåíà ïîïûòêà çàïèñè â ðååñòð';
end;

If RdString<>'' then
 If (reg.GetDataType(RdString)=rdInteger) or(reg.GetDataType(RdString)=rdBinary ) then
  RegEdit:=FloatToStr(Reg.ReadInteger(RdString))
 else
  RegEdit:=Reg.ReadString(RdString);


If allparam=true then
reg.GetValueNames(form1.Listbox1.Items);

If allkey=true then
reg.GetKeyNames(form1.Listbox1.Items);

If CanDelete=true then
 reg.DeleteValue(RdString);
end;
Finally
Val.Free;
end;
Finally
Reg.Free;
end;
end;

Мысля появилась создать некий редактор реестра, т.к. в последнее время вирусы одалели моих знакомых, которые пишут в реестр блокировки разного рода, после чего стандартными средствами не добраться... а вот через win32api можно ))))))

Re: TRegistry.ReadBinaryData - как правильно пользоваться?

Добавлено: 15 апр 2009, 21:16
Duncon
Велосипед не изобретай всевозможных мониторов реестра уже давно и много понаписанно