Форум программистов, компьютерный форум CyberForum.ru

Получение данных из реестра - C++

Восстановить пароль Регистрация
 
p_r_a_g_m_a
 Аватар для p_r_a_g_m_a
108 / 60 / 17
Регистрация: 08.03.2012
Сообщений: 208
Завершенные тесты: 1
14.03.2012, 17:37     Получение данных из реестра #1
Вот кусок кода для проверки:

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
HKEY fKey;
DWORD pcbData = 255;
char* pvData = new char[pcbData];
 
if(RegOpenKeyEx(HKEY_CLASSES_ROOT, ".xml", 0, KEY_QUERY_VALUE, &fKey) == ERROR_SUCCESS)                  //Открываем ключ HKEY_CLASSES_ROOT/.xml
{
    if (RegQueryValueEx(fKey, "", NULL, NULL, (LPBYTE)pvData, &pcbData) == ERROR_SUCCESS)                //Читаем его значение (по умолчанию) - "xmlfile"
    {
        RegCloseKey(fKey);                                  //Закрываем ключ
        if(RegOpenKeyEx(HKEY_CLASSES_ROOT, pvData, 0, KEY_QUERY_VALUE, &fKey) == ERROR_SUCCESS)          //Открываем ключ HKEY_CLASSES_ROOT/xmlfile
        {
            if (RegQueryValueEx(fKey, "", NULL, NULL, (LPBYTE)pvData, &pcbData) == ERROR_SUCCESS) //Читаем его значение (по умолчанию) - "XML Document"
                AfxMessageBox(pvData);
            else
                AfxMessageBox("Не могу прочитать HKEY_CLASSES_ROOT\\xmlfile.@");                  //В итоге получаем сообщение об ошибке 
        }
        else
            AfxMessageBox("Не могу открыть HKEY_CLASSES_ROOT\\xmlfile");
    }
    else
        AfxMessageBox("Не могу прочитать HKEY_CLASSES_ROOT\\.xml.@");
}
else
    AfxMessageBox("Не могу открыть HKEY_CLASSES_ROOT\\.xml");
delete[] pvData;
Не хочет читать данные. То что они есть в реестре сомнений нет. Единственное что мне не понятно, так это то, что ошибка возникает в том случае, если у ключа кроме значение по умолчанию есть еще и другие значения.

Добавлено через 1 час 37 минут
С ошибкой уже разобрался.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.03.2012, 17:37     Получение данных из реестра
Посмотрите здесь:

C++ ввод данных, добавление данных, получение информации из файла по заданным критериям выборки
Получение данных о пк C++
Получение данных из web C++
C++ Получение аппаратно-зависимых данных
Получение данных с сайта C++
C++ Получение данных из командной строки
Получение данных из интернета C++
Получение данных из файла C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16821 / 5242 / 318
Регистрация: 30.03.2009
Сообщений: 14,118
Записей в блоге: 26
15.03.2012, 09:59     Получение данных из реестра #2
Цитата Сообщение от p_r_a_g_m_a Посмотреть сообщение
С ошибкой уже разобрался
Для истории отпишись, в чём проблема была. Эта информация может оказаться полезной другим
p_r_a_g_m_a
 Аватар для p_r_a_g_m_a
108 / 60 / 17
Регистрация: 08.03.2012
Сообщений: 208
Завершенные тесты: 1
15.03.2012, 14:58  [ТС]     Получение данных из реестра #3
Цитата Сообщение от Evg Посмотреть сообщение
Для истории отпишись, в чём проблема была. Эта информация может оказаться полезной другим
Все оказалось предельно просто. Функция RegQueryValueEx меняет значение переменной pcbData, поэтому перед следующим ее вызовом нужно заново установить ее значение - размер буфера.
Yandex
Объявления
15.03.2012, 14:58     Получение данных из реестра
Ответ Создать тему
Опции темы

Текущее время: 00:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru