Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,153
Записей в блоге: 3

Чтение данных с реестра

28.01.2021, 16:34. Показов 2028. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. много лет пользовался примером volvo по поиску значений в реестре (оригинальную ссылку не смог найти).
Но вот у меня появился путь который по факту есть в реестре, но код его не видит.

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
void __fastcall TMainForm::GetReestr(String link,String param)
{
    // Функция для получения данных из реестра
    DWORD dwIndex = 0;
    LONG ret;
    DWORD cbName = MAX_PATH;
    TCHAR szSubKeyName[MAX_PATH];
    wchar_t szDisplayName[500];
    DWORD dwSize= MAX_PATH;
    DWORD dwType= MAX_PATH;
    HKEY hKey;
    HKEY hKey1;
    HKEY hItem;
    DWORD access;
 
    access = RegConnectRegistryW(pc_name, HKEY_LOCAL_MACHINE, &hKey1);
 
    if(access != ERROR_SUCCESS)
        {
            NewError("ERROR_SUCCESS");
            return;
        }
 
    long lResult = RegOpenKeyExW(hKey1, link.c_str(), 0, KEY_READ, &hKey);
    //if(RegOpenKeyExW(hKey1, link.c_str(), 0, KEY_READ , &hKey) != ERROR_SUCCESS)
       if(lResult != ERROR_SUCCESS)
        {
            if (lResult == ERROR_FILE_NOT_FOUND)
                {
                    NewError("Key not found");
                }
                else
                    {
                        NewError("Error opening key");
                    }
 
            return;
        }
 
    while ((ret = RegEnumKeyEx(hKey, dwIndex, szSubKeyName, &cbName, NULL, NULL, NULL, NULL)) != ERROR_NO_MORE_ITEMS)
        {
            if (ret != ERROR_SUCCESS)
                continue;
 
            if (RegOpenKeyEx(hKey, szSubKeyName, 0, KEY_READ, &hItem) != ERROR_SUCCESS)
                continue;
 
            dwSize = sizeof(szDisplayName);
 
            if (RegQueryValueExW(hItem, param.c_str(), NULL, &dwType, (LPBYTE)szDisplayName, &dwSize) == ERROR_SUCCESS)
                NewRezultat(param,String(szDisplayName)); // Вывожу результат поиска в TMemo
 
            RegCloseKey(hItem);
            dwIndex++;
            cbName = MAX_PATH;
        }
 
    RegCloseKey(hKey);
    RegCloseKey(hKey1);
}
//---------------------------------------------------------------------------
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.01.2021, 16:34
Ответы с готовыми решениями:

Чтение из реестра бинарных данных в HEX виде.
Вообщем такое дело, есть в реестре ключ типа REG_BINARY, в нем записаны определенные данные, мне их нужо получить в строковом (string)...

C++ чтение реестра
в общем, пишу функцию для поиска по реестру, но почему-то изначальный путь не тот. Пример: TRegistry *registr = new...

Чтение из реестра
Пытаюсь прочитать из реестра несколько данных, но выходит только одно в поле Memo. Не видит следующего, из-за чего такое может быть? ...

4
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,153
Записей в блоге: 3
28.01.2021, 16:36  [ТС]
Вот сам скрин. По прямому пути указан в RegEdit.. попадаю к значению
Миниатюры
Чтение данных с реестра  
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,153
Записей в блоге: 3
28.01.2021, 17:51  [ТС]
То есть RegOpenKeyExW не чего не находит.

Добавлено через 1 час 2 минуты
Заметил момент....вот есть путь ""Software\\Microsoft\\Windows\\CurrentV ersion\\Installer\\UserData\\......"
Он говорит что такого нет, стоит укоротить путь, удалив UserData, Путь находит.....Но мне то нужна полная ссылка.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33399 / 21509 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
28.01.2021, 19:21
Цитата Сообщение от Dinkin Посмотреть сообщение
оригинальную ссылку не смог найти
Хм... Вот эту?

Сколько символов в пути всего? Что возвращает RegQueryValueExW, когда она "не находит ничего"? Уж не ERROR_MORE_DATA ли?
1
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,153
Записей в блоге: 3
04.02.2021, 15:34  [ТС]
Цитата Сообщение от volvo Посмотреть сообщение
Хм... Вот эту?
Нет, эту видел, был пример...когда Вы перевели его на Билдер. Притом забавняшка в том, что я нашел Ваш же пример (Вами же опубликованный) на другом форуме с кодом под билдер. Но так как ресурс чужой, ссылки сюда не буду кидать =)

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

Еще раз спасибо за отклик!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.02.2021, 15:34
Помогаю со студенческими работами здесь

Чтение значения из параметра Реестра не выходит
Пытаюсь прочитать из параметра ProductName какая винда стоит, но выдает пустое сообщение пробывал OpenKey и одной строкой задавать ...

Чтение из реестра информации о модели USB
как прочитать подключи в реестре? Я уже раз 5 прочитал эту статью https://www.cyberforum.ru/cpp-builder/thread159991.html и пока что дело...

Чтение из реестра значения параметров типа REG_SZ
Читаю Работа с реестром в C++ Builder и не нашел как прочитать значения параметров типа REG_SZ. Силами этого подключаемого файла можно...

Чтение из реестра
подскажите, пожалуйста, каким образом можно считать из реестра значения. Это смешно, но ВСЕ доступные мне примеры считывают одно...

Чтение из реестра
Добрый день, я пользуюсь VS 2010 С++. Я пытаюсь считать из реестра некоторые данные. Все бы хорошо но информация о версии BIOS имеет тип...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru