Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
PoMaH Гость
|
Добавлено: Пт Июл 26 2002 05:59 Заголовок сообщения: Пишу на Буилдере си 5, реестр, бинарн, знач |
|
|
помогите, нужно записать в реестр бинарное значение напр - 95 00 00 00 программно, как? знаю нужно както через массив... с массивами слаб, получаеться тока сменить первое значение (значит кудыто не туда пальцем тыкаю )а полностью ни как если есть у кого-нибудь рабочий пример, плиз буду очень благодарен. и еще нужно это значение проверить вывести например в - лабел. жду, если что пишите на мыло -severyaninu@pisem.net (можем если что обменяться опытом, )) |
|
Вернуться к началу |
|
|
Andy-C Гость
|
Добавлено: Пт Июл 26 2002 08:20 Заголовок сообщения: Re: Пишу на Буилдере си 5, реестр, бинарн, знач |
|
|
LONG RegSetValueEx( HKEY hKey, // handle of key to set value for LPCTSTR lpValueName, // address of value to set DWORD Reserved, // reserved DWORD dwType, // flag for value type CONST BYTE *lpData, // address of value data DWORD cbData // size of value data Оно самоё корректно и выставить ); |
|
Вернуться к началу |
|
|
PoMaH Гость
|
Добавлено: Вт Июл 30 2002 13:04 Заголовок сообщения: Re: Пишу на Буилдере си 5, реестр, бинарн, знач |
|
|
Ну примерчик есть рабочий или часть кода... плиз... не могу ... слаб с хелпами работать... нужно вставить 95000000... в двоичном формате... |
|
Вернуться к началу |
|
|
Andy-C Гость
|
Добавлено: Ср Июл 31 2002 08:13 Заголовок сообщения: Re: Пишу на Буилдере си 5, реестр, бинарн, знач |
|
|
В принципе, для записи такого значения достаточно DWORD.
unsigned long i=95000000; HKEY key; unsigned long val,rez;
//Открываем ключ, ежели отсутствует - создаём rez=RegCreateKeyEx( HKEY_CURRENT_USER, // handle of an open key "SOFTWARE\\My_Company\\Proga\\v.1", // address of subkey name 0, // reserved "binary_data_", // address of class string REG_OPTION_NON_VOLATILE , // special options flag KEY_ALL_ACCESS , // desired security access NULL, // address of key security structure &key, // address of buffer for opened handle &val// address of disposition value buffer ); if(rez!=ERROR_SUCCESS){ Application->MessageBox("Проблемы с открытием ключа","ОШИБКА",MB_ICONHAND+MB_OK); return; } //пишем значение RegSetValueEx( key, // handle of key to set value for "dword_dat", // address of value to set 0, // reserved REG_DWORD , // flag for value type (unsigned char *)&i, // address of value data sizeof(i) // size of value data ); if(rez!=ERROR_SUCCESS) Application->MessageBox("Проблемы с записью ключа","ОШИБКА",MB_ICONHAND+MB_OK);
Ежели необходимо больше, чем DWORD, то необходимо изменить и REG_DWORD на REG_BINARY. |
|
Вернуться к началу |
|
|
PoMaH Гость
|
Добавлено: Чт Авг 01 2002 14:23 Заголовок сообщения: Re: Пишу на Буилдере си 5, реестр, бинарн, знач |
|
|
пасиб с DWORD значение изумительно записываються а вот с бинарными коряво както пишеться... нужно поменять вот именно бинарное значение... %) |
|
Вернуться к началу |
|
|
Andy-C Гость
|
Добавлено: Чт Авг 01 2002 14:33 Заголовок сообщения: Re: Пишу на Буилдере си 5, реестр, бинарн, знач |
|
|
0, // reserved REG_BINARY , // flag for value type (unsigned char *)&i, // address of value data sizeof(i) // size of value data
ежели бедет храниться в массива, то размер sizeof(элемент)*кол-во элементов.
А что значит коряво? Он не распознаёт порядок байт (при рпосмотре в regeditе) |
|
Вернуться к началу |
|
|
PoMaH Гость
|
Добавлено: Чт Авг 01 2002 15:13 Заголовок сообщения: Re: Пишу на Буилдере си 5, реестр, бинарн, знач |
|
|
ну да пробовал... ... не распознаёт всякую билиберду пишет.. но значение бинарное ... ...я первоначально пытался вот так:
TRegistry *r = new TRegistry(); const int bs = 16; char b[bs]; try { r->RootKey = HKEY_CURRENT_USER; r->OpenKey("\\", false); for(int i = bs - 1; i >= 0; i--) b[ i ] = i; r->WriteBinaryData("test", b, bs); } catch(Exception &ex) { Application->ShowException(&ex); } delete r; но млин строку в бинарном отлично пишет но вот конкретно что мне нужно ну ни как не пишет (( нужно как то через масив... а я их ну ника не понимаю как с ними работать.. да и не сталкивался... |
|
Вернуться к началу |
|
|
Andy-C Гость
|
Добавлено: Пт Авг 02 2002 07:47 Заголовок сообщения: Re: Пишу на Буилдере си 5, реестр, бинарн, знач |
|
|
TRegistry *r=new TRegistry(); unsigned long d=95000000;
r->OpenKey("\\SOFTWARE\\My_company\\Product\\v.1",true); r->WriteInteger("int_data",d); r->WriteBinaryData("bin_data",&d,sizeof(d));
оба варианта записи работают совершенно корректно и ОДИНАКОВО!!!!!!!!!!!! Записывается (по байтно в hex) c0 95 a9 05 С учётом порядка следования байт в Intel архитектуре : 0x05a9950c, что (как не извернись) соответствует десятичному значению 95000000!!!!!!!!!!!! По моему, Вы не в курсе, что Вам надо? ;( |
|
Вернуться к началу |
|
|
PoMaH Гость
|
Добавлено: Пт Авг 02 2002 11:28 Заголовок сообщения: Re: Пишу на Буилдере си 5, реестр, бинарн, знач |
|
|
мда... ну пишет то оно то что вы говорите... но мне нужно вот именно записать 95 00 00 00 а там с права в строке получиться должно -"...." фиг знает что там получаеться? но нужно вот именно... вы уж не ворчите... есть такая вот штука... частенькоя просто ручками там первые два символа менял.. хочу просто программно теперь менять... )) а как мы кажеться что то друг друга не допонимаем... ... правильно вы говорите что пулучаться : Записывается (по байтно в hex) c0 95 a9 05 и с права у вас высвечиваться - А.с. - ага? но мне нужно чтоб во втором столбце после 0000 было прописано вот именно 95 00 00 00 - ну вроде бы как нибудь обяснил? )) |
|
Вернуться к началу |
|
|
PoMaH Гость
|
Добавлено: Пт Авг 02 2002 11:29 Заголовок сообщения: Re: Пишу на Буилдере си 5, реестр, бинарн, знач |
|
|
мда... ну пишет то оно то что вы говорите... но мне нужно вот именно записать 95 00 00 00 а там с права в строке получиться должно -"...." фиг знает что там получаеться? но нужно вот именно... вы уж не ворчите... есть такая вот штука... частенькоя просто ручками там первые два символа менял.. хочу просто программно теперь менять... )) а как мы кажеться что то друг друга не допонимаем... ... правильно вы говорите что пулучаться : Записывается (по байтно в hex) c0 95 a9 05 и с права у вас высвечиваться - А.с. - ага? но мне нужно чтоб во втором столбце после 0000 было прописано вот именно 95 00 00 00 - ну вроде бы как нибудь обяснил? )) |
|
Вернуться к началу |
|
|
Andy-C Гость
|
Добавлено: Пт Авг 02 2002 13:19 Заголовок сообщения: Re: Пишу на Буилдере си 5, реестр, бинарн, знач |
|
|
r->WriteString("string_data",AnsiString(95000000)); r->WriteInteger(".. показывает в 16-ричной системе счисления и 95 там, полная случайность, вернее закономерность 0x95=149
Вы хотите туда записать 95 000 000 в десятичной системе счисления или увидеть в регедите 95000000???????????!!!!!!!!! |
|
Вернуться к началу |
|
|
PoMaH Гость
|
Добавлено: Пт Авг 02 2002 14:07 Заголовок сообщения: Ответ на: "Re: Пишу на Буилдере си 5, рее..- Andy-C- 02-08-2002 14:19" Re: Пишу на Буилдере си 5, |
|
|
есть ася я там с 8 и до 18... могет пообщаемся...Andy? (108015903) ... вот смотри задача какая у меня... убирать ставить авторун. HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\.. в значении двоичного параметра "NoDriveTypeAutoRun" вместо "95" вписываем "91" или "bd" - тоже интересно как это? Возможные варианты: 91 — AutoRun для всех дисководов включен; bd — AutoRun для всех дисководов выключен; 95 — AutoRun для CD-ROM и HDD включен. |
|
Вернуться к началу |
|
|
|