Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.023 c
1-84289
Александр из Минска
2003-06-07 21:34
2003.06.26
I/O error 32


3-83893
miss
2003-06-03 10:16
2003.06.26
Даты


3-83856
Dimaz-z
2003-06-01 10:44
2003.06.26
Как выстроить по русскому алфивиту содержимое базы данных?


3-84034
st-av
2003-05-31 18:13
2003.06.26
DBGrid и форматированный ввод


3-83953
ruslan_as
2003-06-04 11:47
2003.06.26
Помогите с update в InterBase





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский