Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/19: Рейтинг темы: голосов - 19, средняя оценка - 4.53
145 / 100 / 6
Регистрация: 11.03.2010
Сообщений: 477

Registry - Binary value

31.03.2011, 13:51. Показов 3870. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток уважаемые програмисты!

Есть у меня задача, в рамках которой нужно заменять значение в реестре, значение это в реестре хранится в НЕХ виде.

И вот я столкнулся с проблемой, если експортировать этот ключик в файл, то я получаю запись в НЕХ виде:

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Windows Registry Editor Version 5.00
 
[HKEY_CURRENT_USER\Printers\DevModePerUser]
"KONICA MINOLTA"=hex:4b,00,4f,00,4e,00,49,00,43,00,41,00,20,00,4d,00,49,00,4e,\
  00,4f,00,4c,00,54,00,41,00,00,00,32,00,29,00,00,00,41,00,20,00,4d,00,49,00,\
  4e,00,4f,00,4c,00,54,00,41,00,2c,00,4c,00,6f,00,63,00,00,00,01,04,00,01,dc,\
  00,60,29,0f,3f,00,02,01,00,09,00,9a,0b,34,08,64,00,01,00,07,00,58,02,02,00,\
  01,00,58,02,01,00,00,00,41,00,34,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
  00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
  00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
  00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,01,00,00,00,02,00,\
  00,00,01,01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
  00,00,00,00,00,58,29,00,00,53,50,4c,58,01,00,00,00,58,29,00,00,49,4f,50,54,\
  48,4d,00,00,00,00,00,00,00,00,00,00,50,43,4c,58,4c,00,00,00,00,00,00,00,00,\
  00,00,00,00,00,00,00,00,00,00,00,0c,f3,67,06,00,00,00,00,01,00,09,00,34,08,\
А если пробовать записать в реестр через
C++
1
2
3
4
char *buffer=new char;
regu->OpenKey("Printers\\DevModePerUser",true);
  buffer = "4b,00,4f,00,4e,00,49,00,43,00,41,00,20,00,4d,00,49,00,4e,";
    regu->WriteBinaryData(l->Strings[i],buffer,strlen(buffer));
То вот мое выражение еще раз преобразуется в НЕХ, и в ключ вносится бред.
вот и вопрос, как можно записать в ключ сразу НЕХ, или же как можно мой полученный НЕХ, преобразовать в строку, и ее занести(тут меня терзают сомнения относительно сохранности и целостности преобразований)?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.03.2011, 13:51
Ответы с готовыми решениями:

Достать значение с object(Joomla\Registry\Registry)
Добрый день ув. пользователи ! Подскажите пожалуйста,как достать свойство body_background из обьекта ? $app =...

Registry, creating registry sets
Помогите не знаю как сделать что бы создавало путь....creating registry sets если можно в коде, пожалуйста

"_10.binary.binary()" должен объявлять тело, т.к. он не помечен модификатором abstract, extern, или partial
Подскажите, что это за ошибка: "_10.binary.binary()" должен объявлять тело, т.к. он не помечен модификатором abstract, extern, или...

12
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
31.03.2011, 14:55
Прочитай аот здесь вот я думаю ты поймёшь

http://cprime.110mb.com/lesson/0110/10-6.php
1
145 / 100 / 6
Регистрация: 11.03.2010
Сообщений: 477
01.04.2011, 15:27  [ТС]
пасиб за статейку, направился в нужном направлении

Добавлено через 21 час 50 минут
Вышел у меня вот такой вот кусок кода.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void __fastcall TForm2::Button3Click(TObject *Sender)
{
 
 HKEY hKey = NULL;
 TCHAR *sKey = new TCHAR;
 sKey = "Printers\\DevModePerUser";
LONG rc=RegOpenKeyEx(HKEY_CURRENT_USER,sKey,0,KEY_SET_VALUE,&hKey);
BYTE pVal[2048] = {4b,00,4f,00,4e,00,49,00,43,00,41,00,20,00,4d,00,49,00,4e,00,4f,00,4c,00,54,00,41,00,00,00,32,00,29,00,00,00,41,00,20,00,4d,00,49,00,4e,00,4f,00,4c,00,54,00,41,00,2c,00,4c,00,6f,00,63,00,00,00,01,04,00,01,dc,00,60,29,0f,3f,00,02,01,00,09,00,9a,0b,34,08,64,00,01,00,07,00,58,02,02,00,01,00,58,02,01,00,00,00,41,00,34,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,01,00,00,00,02,00,00,00,01,01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,58,29,00,00,53,50,4c,58,01,00,00,00,58,29,00,00,49,4f,50,54,48,4d,00,00,00,00,00,00,00,00,00,00,50,43,4c,58,4c,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,0c,f3,67,06,00,00,00,00,01,00,09,00,34,08,9a,0b,2b,00,2b,00,2b,00,2b,00,00,34,08,9a,0b,00,00,00,4c,20,00,00,ad,2d,00,00,65,01,34,08,9a,0b,00,34,08,9a,0b,00,4c,20,00,00,ad,2d,00,00,01,00,64,00,07,00,01,01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,01,01,01,01,01,01,00,49,6e,54,72,61,79,31,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,01,01,00,00,01,01,01,01,01,01,00,49,6e,54,72,61,79,32,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,02,01,00,00,01,01,01,01,01,01,00,49,6e,54,72,61,79,33,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,03,01,00,00,01,01,01,01,01,01,00,49,6e,54,72,61,79,34,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,04,01,00,00,01,01,01,01,01,01,00,49,6e,54,72,61,79,4c,43,54,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,e8,03,00,00,01,01,01,01,01,01,00,49,6e,54,72,61,79,4d,61,6e,75,61,6c,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,04,00,00,00,01,01,01,01,01,01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,01,01,01,01,01};
 
  LONG  rec=RegSetValueEx(hKey,"KONICA MINOLTA",NULL,
                     REG_BINARY,    //тип параметра
                     pVal,          //значение параметра
                     2048);            //длина параметра
но у меня ругается на некоторые символы в указанном масиве. Хотя символы все вытянул из реестра...
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
01.04.2011, 15:39
Конкретное название ошибки приведи
0
145 / 100 / 6
Регистрация: 11.03.2010
Сообщений: 477
01.04.2011, 15:45  [ТС]
BYTE pVal[2048] = {53,79,6d,62,6f,6c};

выдает ошибки:

[BCC32 Error] Unit1.cpp(164): E2257 , expected
[BCC32 Error] Unit1.cpp(164): E2322 Incorrect number format
[BCC32 Error] Unit1.cpp(164): E2141 Declaration syntax error
[BCC32 Error] Unit1.cpp(164): E2139 Declaration missing ;


хотя если написать

BYTE pVal[2048] = {00,00,00,00,00,00,00,00};


то все идет как по маслу.
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
01.04.2011, 15:57
Тут у тебя конечно очень много накручено, ноя тебе покажу пример как я делал

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void __fastcall TForm1::Button2Click(TObject *Sender)
{
HKEY hRootKey = HKEY_CURRENT_USER;
TCHAR *sKey = "Control Panel\\Keyboard";
TCHAR *sVarName1 = "InitialKeyboardIndicators";
String text = "0";
TCHAR *sVal = text.c_str();
HKEY hKeyResult = NULL;
LONG rc = RegOpenKeyEx(hRootKey,sKey,0,KEY_ALL_ACCESS,&hKeyResult);//получение параметров данного данного ключа
if (rc == ERROR_SUCCESS)
 {
  if(RegSetValueEx(hKeyResult,sVarName1,0,REG_SZ,(BYTE*)sVal,lstrlen(sVal))!=ERROR_SUCCESS);
 
   RegCloseKey(hKeyResult);
 }
 else
 {
  ShowMessage("Ключ не открыт");
 }
 
}
Только для другого формата.

А вообще поясни откуда ты взял этот массив и что ты хочешь с ним сделать?
0
145 / 100 / 6
Регистрация: 11.03.2010
Сообщений: 477
01.04.2011, 16:02  [ТС]
та со строчными параметрами(REG_SZ, REG_DWORD) я разобрался

а затык именно в бинарным значением.

а параметр это сохраненные в реестре пользовательские настройки принтера.

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

там параметр блин в ~13000...14000 элементов, так мало того что я пока еще не родил как этот массив записать, так оно у меня еще ругается на неправильное предоставление чисел..
0
103 / 74 / 10
Регистрация: 29.05.2010
Сообщений: 192
01.04.2011, 16:03
ругается потому что в шестнадцатиричном формате пишется 0xff, 0x0b и тд
2
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
01.04.2011, 16:11
Цитата Сообщение от koldun Посмотреть сообщение
нужные мне.
Ты их, что сам выдумал или как?
Или ты берёшь их откуда-то?
0
145 / 100 / 6
Регистрация: 11.03.2010
Сообщений: 477
01.04.2011, 16:12  [ТС]
Цитата Сообщение от -LeV- Посмотреть сообщение
ругается потому что в шестнадцатиричном формате пишется 0xff, 0x0b и тд
ты даже не представляешь как ты мне толькочто помог!

сенкс!

Добавлено через 31 секунду
Цитата Сообщение от Sasha Посмотреть сообщение
Ты их, что сам выдумал или как?
Или ты берёшь их откуда-то?
экспортировал ветку реестра, и от туда беру.
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
01.04.2011, 16:14
Хотя я понял откуда ты взял их

Добавлено через 1 минуту
Цитата Сообщение от koldun Посмотреть сообщение
ты даже не представляешь как ты мне толькочто помог!

Не по теме:

Что заработало?

0
145 / 100 / 6
Регистрация: 11.03.2010
Сообщений: 477
01.04.2011, 16:18  [ТС]
частично да.

перестало выдавать ошибку о том что это число не есть бинарным числом.

осталось только придумать как можно загрузить в масив 13000 значений ?

мож подскажете?

меня даже устроит что-то в виде LoadFromFile
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
01.04.2011, 16:22
Цитата Сообщение от koldun Посмотреть сообщение
меня даже устроит что-то в виде LoadFromFile
Пошарься по форуму тема помоему не раз подымалась
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.04.2011, 16:22
Помогаю со студенческими работами здесь

Caused by: android.view.InflateException: Binary XML file line #13: Binary XML file line #13: Error inflating class
Caused by: android.view.InflateException: Binary XML file line #13: Binary XML file line #13: Error inflating class...

Win32/Registry
require 'Win32/Registry' Win32::Registry::HKEY_CURRENT_USER.open('SOFTWARE\foo') do |reg| value = reg ...

Registry permissions
Доброго времени. Перелазил уже тысячу сайтов в поиске информайции о выдачи прав определенному пользователю в реестре пермишены в ветке...

Registry booster
Здравствуйте! Я увидела на сайте рекламу этой программы. Скачала бесплатно, чтобы попробовать, но ошибки-то она нашла бесплатно, их...

Registry не работает
Вдруг у меня загорелась идея опять сделать игру, но в этот раз на c#. Идея уже была, и я начал с системы аккаунтов. Вот сделал окно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Номеклатура. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru