Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.26;
Скачать: CL | DM;

Вниз

Срочно нужно записать в реестр Бинарный код ! подскажите   Найти похожие ветки 

 
Ghost ©   (2003-06-13 15:27) [0]

Мне нужно программно записать в реестр бинарный код взятый из reg файла . Сам reg файл выглядит так :

REGEDIT4

[HKEY_LOCAL_MACHINE\SOFTWARE\Stardock\WindowBlinds]
"Data"=hex:8c,69,51,71,b5,11,d1,0c,29,64,52,00,29,d5,c7,4a,c3,fc,1d,06,74,63,\
56,bf,9c,38,8c,98,38,dd,3e,0c,35,47,22,64,ef,33,1d,53,77,ae,73,8c,f8,75,42,\
82,bc,5f,70,c7,01,b5,8d,e5,c8,ae,0a,46,96,f1,da,e4

--------------

Я нашёл код для записи в реест кода в бинарном виде , но не знаю
как вставить туда код из reg файла
сам код для записи :

procedure TForm1.Button1Click(Sender: TObject);
var
Reg: TRegistry;
b:integer;
begin
Reg := TRegistry.Create;
b:=1;
try
Reg.RootKey := HKEY_LOCAL_MACHINE;
if Reg.OpenKey("SOFTWARE\Stardock\WindowBlinds", True) then
begin
reg.WriteBinaryData("data2",b,1);
reg.CloseKey;
end;
finally
Reg.Free;
inherited;
end;
end;
end.

Подскажите пожайлуста , а то я уже четвёртый час в инете лазею всё не могу найти решение :(


 
evvcom ©   (2003-06-13 15:40) [1]

А ShellExecute не устроит? Пусть сам regedit и пропишет свои данные. Чего велосипед изобретать-то?


 
xGhost   (2003-06-13 15:44) [2]

> evvcom

Там идёт запрос ! типа вы действительно хотите и т.д ! а нужно чтобы это не травмировало Юзверей !
Может этот код как нибудь преобразовать и загнать в реестр обычным способом ?


 
evvcom ©   (2003-06-13 16:00) [3]

Ну тогда разбирай файл reg и прописывай через TRegistry.


 
Федя   (2003-06-13 16:02) [4]

Можно один раз через start *.reg; потом программой считать из реестра в файл своего удобного формата. А потом все время читать из своего файла и кидать в реестр у юзверей.

или просто вот-так:

Const
Data:array [0..xxx]of byte=($8c,$69,$51,$71,$b5,...,$da,$e4);


 
Ghost ©   (2003-06-13 16:02) [5]

Это довольно сложно разобрать :

REGEDIT4

[HKEY_LOCAL_MACHINE\SOFTWARE\Stardock\WindowBlinds]
"Data"=hex:8c,69,51,71,b5,11,d1,0c,29,64,52,00,29,d5,c7,4a,c3,fc,1d,06,74,63,\
56,bf,9c,38,8c,98,38,dd,3e,0c,35,47,22,64,ef,33,1d,53,77,ae,73,8c,f8,75,42,\
82,bc,5f,70,c7,01,b5,8d,e5,c8,ae,0a,46,96,f1,da,e4

-------------------------------

Есть мысль : может можно как нибудь считать из реестра бинарное значение и занести его в переменную , а затем записать обратно только под другим именем ?


 
Ghost ©   (2003-06-13 16:03) [6]

> Федя
а поподробней можно ? или примером ...


 
Федя   (2003-06-13 16:06) [7]

Насчет первого или второго варианта?


 
Ghost ©   (2003-06-13 16:21) [8]

> Федя

Желательно первого ! но мен всё равно лишь бы работало ! просто нужно 1 раз запомнить и потом при каждой загрузке записывать в реестр сам бинарный код я дал !

Можно и 2 вариант , мне без разницы


 
Федя   (2003-06-13 16:55) [9]

Ну насчет первого:
Пишеш комманду: start имя_твоего_рег_файла
Потом пишеш отдельную программу которая считывает из реестра и пишет в обычный файл последовательность байт прочитанную из рееста.
Затем в своеей программе для юзверей читаеш из файла и пишеш в реестр. Все просто.

Ну а на счет второго способа вроде все и так понятно:
Было:
"Data"=hex:8c,69,51,71,b5,11,d1,0c,29,64,52,00,29,d5,c7,4a,c3,fc,1d,06,74,63,\
56,bf,9c,38,8c,98,38,dd,3e,0c,35,47,22,64,ef,33,1d,53,77,ae,73,8c,f8,75,42,\
82,bc,5f,70,c7,01,b5,8d,e5,c8,ae,0a,46,96,f1,da,e4
Стало:
Data:array [0..xxx] of byte=
(8c,69,51,71,b5,11,d1,0c,29,64,52,00,29,d5,c7,4a,c3,fc,1d,06,74,63,\
56,bf,9c,38,8c,98,38,dd,3e,0c,35,47,22,64,ef,33,1d,53,77,ae,73,8c,f8,75,42,\
82,bc,5f,70,c7,01,b5,8d,e5,c8,ae,0a,46,96,f1,da,e4)
Только нужно перед числами пропоставлять символ $


 
VMcL ©   (2003-06-13 17:18) [10]

>xGhost (13.06.03 15:44)
>а нужно чтобы это не травмировало Юзверей !

regedit.exe -s somefile.reg

:)


 
Новый   (2003-06-13 18:27) [11]

Существует много видов Conversions, к примеру, BIN>HEX или BIN>Integer. Переведи BIN>Integer и т.п., запиши в реестр. При чтении (ИМХО для какой-то проверки) обратная конверсия и сравнивай


 
Vit@ly ©   (2003-06-13 18:49) [12]

IMHO, все гораздо проше
См. Help TRegistry.WriteBinaryData


 
Suntechnic ©   (2003-06-13 19:15) [13]

>xGhost (13.06.03 15:44)
Следуй совету evvcom © (13.06.03 15:40), только в командную строку добавь параметр /S и не мучайся.

P.S.
/S- Silent, i.e. hide confirmation box when importing files


 
Suntechnic ©   (2003-06-13 19:19) [14]

>VMcL © (13.06.03 17:18)
Сорри, не дочитал топик до конца :)



 
Ghost ©   (2003-06-14 08:04) [15]

> Vit@ly

Не мучайся :)

Можно кодом ? а то я не могу что то замутить .. :(

а запускать reg файл с ключём -S нафик не надо :( для того чтобы не дать пользователю прочитать данные ( скопировать , изменить )


 
Ghost ©   (2003-06-14 08:33) [16]

Нашёл как читать данные , теперь правда не могу разобраться как записать и сохранить их :(

код лоя чтения данных :

r:tregistry;

const
Key : String = "SOFTWARE\RAdmin\v1.01\ViewType";
Val : String = "data2";
var
Data : Array of Byte;
S : String;
sz : Word;
I : Word;
begin
R := TRegistry.Create;
with R do
begin
RootKey := HKEY_LOCAL_MACHINE;
OpenKey(Key, False);
if GetDataType(Val) = rdBinary then
begin sz := GetDataSize(Val);
if sz > 0 then begin
SetLength(Data, sz);
ReadBinaryData(Val, Data[0], sz);
S := Val + " = ";
for I := 0 to sz - 1 do
begin
S := S + Format("%2x",[Data[I]]);
end;
Edit1.Text := S;
end;
end;
Free;
end;
end;


 
Vit@ly ©   (2003-06-14 10:40) [17]

procedure TForm1.Button1Click(Sender: TObject);
var
Reg : TRegistry;
Buffer : array[0..255] of Char;
CharsRead : integer;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CURRENT_USER;
try
if Reg.OpenKey("твой ключ", False) then
//читаем из реестра
CharsRead := Reg.ReadBinaryData("твой параметр", Buffer, SizeOf(Buffer));
ShowMessage(Buffer);
//пишем в реестр
REG.WriteBinaryData("твой параметр или новый", Buffer, SizeOf(Buffer));
finally
Reg.Free;
end;
end;


 
Ghost ©   (2003-06-14 10:58) [18]

>Vit@ly

ништяк ! только вот смотри я прочитал параметр , как мне теперь его сохранить например в файл чтобы потом на другом компьютере записать в реестр ?


 
Vit@ly ©   (2003-06-14 11:16) [19]

Информация в Buffer, делай с ней что захочешь


 
Ghost ©   (2003-06-14 11:46) [20]

> Информация в Buffer, делай с ней что захочешь

я как раз это и спрашивал ! я начинающий програмёр по этому с этим имею мало опыта работы ! Если можно то подскажите пожайлуста как сохранить данные из буфера в файл , а затем загрузить из файла и поместить в буфер .


 
Федя   (2003-06-15 13:46) [21]

Посмотри на процедуру BlockWrite
И иди учи испанский язык, тоесть поскалевский


 
Pattern ©   (2003-06-15 18:06) [22]

Удалено модератором
Примечание: Задай свой вопрос в отдельной ветке



Страницы: 1 вся ветка

Текущий архив: 2003.06.26;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.019 c
14-84519
Nox
2003-06-01 13:39
2003.06.26
DISABLEKERNEL


3-83864
BBCHa
2003-05-23 16:19
2003.06.26
ADO и окно пароля


4-84846
sucer
2003-04-17 17:12
2003.06.26
Проблема с HOOK


7-84779
MortalScorpion
2003-04-16 18:57
2003.06.26
Поиск в реестре


3-83909
Ann
2003-06-03 10:55
2003.06.26
Error