Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/29: Рейтинг темы: голосов - 29, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 02.07.2012
Сообщений: 66

Не читается реестр Windows 7

26.07.2013, 21:14. Показов 6080. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Требуется чтение значения параметра из реестра. Написал простейшую программку, в которой создаю в реестре определённые ветви и параметр Color в ключе HKEY_LOCAL_MACHINE. Ветки создаются и параметр со значением тоже появился, но не совсем там где указывал - в разделе HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\KESB\CHAS, хотя указываю HKEY_LOCAL_MACHINE\SOFTWARE\KESB\CHAS может поэтому и глюк.
Когда проверяю наличие этого параметра Color и хочу считать его значение (уже после того как программа создала нужные ветки), функция ValueExists возвращает false тем самым указывая что его не существует и он соответственно не читается.
Подскажите, пожалуйста, в чём проблема? (Windows 7, запускаю от имени администратора).

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
TRegistry *reg=new TRegistry(KEY_ALL_ACCESS);
reg->RootKey=HKEY_LOCAL_MACHINE;
reg->Access = KEY_WRITE;
bool OpReg=reg->OpenKey("SOFTWARE\\KESB\\CHAS",true);
//определяем заносились ли данные в реестр на текущем компьютере, если нет - заносим!
if (!OpReg)
    {
    ShowMessage("Не могу прочитать данные из реестра! Восстановлены значения по умолчанию!");
    sTrackBar1->Position=0;
    sSkinManager1->HueOffset=0;
    }
else
    {
    AnsiString Par="Color";
    if(!reg->ValueExists(Par))
        {
        ShowMessage("Значения не существует");
        reg->WriteString("Color","0");//заполняем реестр данными
        }
    else
        {
        sTrackBar1->Position=StrToInt(reg->ReadInteger("Color")); //иначе, считываем данные
        sSkinManager1->HueOffset=StrToInt(reg->ReadInteger("Color"));
        }
    }
reg->CloseKey();   //Закрываем ключ
delete reg;
Добавлено через 5 часов 13 минут
О великие гуру, где же вы?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.07.2013, 21:14
Ответы с готовыми решениями:

Windows 7 реестр
Доброго времени суток, подскажите как через реестр отключить надписи в Windows 7 в окне после нажатия Ctrl+Alt+Del такие как "Сменить...

Реестр Windows
Долго изучал функции по работе с реестром .. в итоге научился создавать ключи, создавать параметры всё короче делать .. а вот как...

Реестр и Windows 7
У меня Windows7 x64. Пишу код: #include <Windows.h> #include <stdlib.h> #include <stdio.h> int main() { HKEY res; ...

7
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
26.07.2013, 21:17
Gamlex, а система 64 битная?
0
0 / 0 / 0
Регистрация: 02.07.2012
Сообщений: 66
26.07.2013, 22:11  [ТС]
Добавлено через 30 секунд
Цитата Сообщение от Ddv122 Посмотреть сообщение
Gamlex, а система 64 битная?
Да, она самая
0
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
26.07.2013, 22:22
Gamlex, ну тогда всё правильно

Реестр 64-разрядных версий Windows подразделяется на 32- и 64-разрядные разделы. Большинство 32-разрядных разделов имеют те же имена, что и их аналоги в 64-разрядном разделе, и наоборот. По умолчанию редактор реестра 64-разрядных версий Windows отображает 32-разрядные разделы в разделе
HKEY_LOCAL_MACHINE\Software\WOW6432Node
Просто делайте 2 проверки и всё...
0
0 / 0 / 0
Регистрация: 02.07.2012
Сообщений: 66
26.07.2013, 22:49  [ТС]
Цитата Сообщение от Ddv122 Посмотреть сообщение
Gamlex, ну тогда всё правильно

Просто делайте 2 проверки и всё...
Дело в том, что строкой я не могу выбрать раздел WOW6432Node
Если я буду писать
bool OpReg=reg->OpenKey("SOFTWARE\\WOW6432Node\\KESB\\C HAS",true);
чтобы сослаться на этот раздел, то создастся ветка типа SOFTWARE\\WOW6432Node\\WOW6432Node\\KESB \\CHAS.
Кроме того, я сам создавал нужный параметр в ветках SOFTWARE\\WOW6432Node\\KESB\\CHAS и SOFTWARE\\KESB\\CHAS, но программа его не находила ни в том ни в другом месте.

Добавлено через 6 минут
Короче говоря я искуственно создавал подветки \\KESB\\CHAS с параметром Color и в ветке WOW6432Node и просто в SOFTWARE, потом искал приведённым выше алгоритмом, результата никакого
0
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
26.07.2013, 23:16
Gamlex, а так? У меня всё ок
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
TRegistry *reg=new TRegistry(KEY_ALL_ACCESS);
reg->RootKey=HKEY_LOCAL_MACHINE;
bool OpReg=reg->OpenKey("SOFTWARE\\KESB\\CHAS",true);
//îïðåäåëÿåì çàíîñèëèñü ëè äàííûå â ðååñòð íà òåêóùåì êîìïüþòåðå, åñëè íåò - çàíîñèì!
if (!OpReg)
    {
    ShowMessage("Íå ìîãó ïðî÷èòàòü äàííûå èç ðååñòðà! Âîññòàíîâëåíû çíà÷åíèÿ ïî óìîë÷àíèþ!");
    }
else
    {
    AnsiString Par="Color";
    if(!reg->ValueExists(Par))
        {
        ShowMessage("Çíà÷åíèÿ íå ñóùåñòâóåò");
        reg->WriteString("Color","0");//çàïîëíÿåì ðååñòð äàííûìè
        }
    else
        {
          ShowMessage(reg->ReadString("Color"));
        ShowMessage("Çíà÷åíèÿ ñóùåñòâóåò");
        }
    }
reg->CloseKey();   //Çàêðûâàåì êëþ÷
delete reg;
1
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
26.07.2013, 23:23
Цитата Сообщение от Gamlex Посмотреть сообщение
Ветки создаются и параметр со значением тоже появился, но не совсем там где указывал - в разделе HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ KESB\CHAS, хотя указываю HKEY_LOCAL_MACHINE\SOFTWARE\KESB\CHAS может поэтому и глюк.
Это не глюк. Это называется registry redirection: операции с некоторыми ветками реестра,
выполняемые 32-битными приложениями на 64-битных системах, прозрачно перенаправляются в
Wow6432Node. Чтобы этого не происходило, нужно или иметь 64-битное приложение, или
использовать флаг KEY_WOW64_64KEY.

Ссылка по теме:
Registry Redirector
1
0 / 0 / 0
Регистрация: 02.07.2012
Сообщений: 66
27.07.2013, 01:42  [ТС]
Цитата Сообщение от Ddv122 Посмотреть сообщение
У меня всё ок
Согласен, работает.
Неужели проблема в строке
C++
1
reg->Access = KEY_WRITE;
Убежденный, тоже полезная информация, спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.07.2013, 01:42
Помогаю со студенческими работами здесь

Системный Реестр в WINDOWS NT.
В программе должно быть реализовано: - создание подраздела в системном Реестре; - задание параметров подраздела в системном Реестре; ...

Не читается реестр
Есть два куска кода: RegistryKey reg; reg =...

Windows-1251 не читается
Здравствуйте, у меня стоит Xubuntu 16.04 , в ней есть нативная Java, а ещё есть нативный Minecraft, но вот один мод в нем заполнял другой...

Не полностью читается файл на Windows
Просьба помочь, т.к. потихоньку начинают закипать мозги... При попытке считать строки из текстового файла (unix mailbox) под Windows...

Кириллица не читается в командной строке Windows
Не могу разобраться с кодировкой в psql. Выводит как на изображении. Что делать?


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен 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, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru