Форум: "Основная";
Текущий архив: 2003.06.26;
Скачать: [xml.tar.bz2];
ВнизСрочно нужно записать в реестр Бинарный код ! подскажите Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.028 c