Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
1 / 1 / 2
Регистрация: 07.06.2016
Сообщений: 82

Реестр

11.05.2018, 10:43. Показов 1716. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят помогите модернизировать программу

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
#include <iostream>
#include <Windows.h>
 
void Out(TCHAR buf[])
{
    for(int i = 0; i < MAX_PATH; ++i)
        if(buf[i] < 256 && buf[i] > 0)
        {
            std::cout<<(char)buf[i];
            buf[i] = 0;
        }
    std::cout<<std::endl;
}
int main()
{
    setlocale(LC_ALL, "Russian");
    TCHAR szBuff[MAX_PATH];
    DWORD dwBSize = MAX_PATH, dwIndex = 0;
    HKEY    hKey;
    LONG    lResult(0);
    FILETIME ft;
    if(!(RegOpenKeyEx(HKEY_CURRENT_USER, "software", 0, KEY_ENUMERATE_SUB_KEYS, &hKey)))
    {
        while(!lResult)
            if(!(lResult = RegEnumKeyEx(hKey, dwIndex, szBuff, &dwBSize, 0, 0, 0, &ft)))
            {
                dwIndex++;
                dwBSize = MAX_PATH;
                Out(szBuff);
            }
    }
    system("pause");
    return 0;
}
Данная программа выводит реестр из HKEY_CURRENT_USER, "software". Нужно сделать, чтоб вывод был по выбору раздела,а так же возможность добавлять и удалять была.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.05.2018, 10:43
Ответы с готовыми решениями:

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

Не пишет в реестр
#pragma comment(lib, &quot;WinMM.Lib&quot;)//для того чтобы работало открывание дисковода #pragma comment(linker, &quot;/subsystem:console&quot;) ...

winapi реестр
Здравствуйте! нужно сделать задание. &quot;Программа должна при запуске устанавливать картинку на рабочий стол, через время удалить картинку....

2
475 / 427 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
11.05.2018, 10:54
Цитата Сообщение от zergreak Посмотреть сообщение
сделать, чтоб вывод был по выбору раздела
Ну так спрашивай, какой раздел реестра необходимо модифицировать/читать, и вместо HKEY_CURRENT_USER подставляй необходимый.
Цитата Сообщение от zergreak Посмотреть сообщение
так же возможность добавлять и удалять была.
Для этого есть специальные методы, которые идентичны RegOpen, RegEnum, но служат для удаления/добавления (разумеется, если есть на то права).

Разделы:
C++
1
2
3
4
5
6
7
#define HKEY_CLASSES_ROOT                   (( HKEY ) (ULONG_PTR)((LONG)0x80000000) )
#define HKEY_CURRENT_USER                   (( HKEY ) (ULONG_PTR)((LONG)0x80000001) )
#define HKEY_LOCAL_MACHINE                  (( HKEY ) (ULONG_PTR)((LONG)0x80000002) )
#define HKEY_USERS                          (( HKEY ) (ULONG_PTR)((LONG)0x80000003) )
#define HKEY_PERFORMANCE_DATA               (( HKEY ) (ULONG_PTR)((LONG)0x80000004) )
#define HKEY_PERFORMANCE_TEXT               (( HKEY ) (ULONG_PTR)((LONG)0x80000050) )
#define HKEY_PERFORMANCE_NLSTEXT            (( HKEY ) (ULONG_PTR)((LONG)0x80000060) )
Проверка примерно такая:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int DelKey(RegData data)
{
    HKEY h = nullptr;
 
    if (!wcscmp(L"HKCR", data.root)) //Здесь сверяем нужный раздел
    {
        if (RegOpenKeyExW(HKEY_CLASSES_ROOT, data.path, 0, 
            KEY_ALL_ACCESS, &h) != ERROR_SUCCESS) //Здесь пытаемся получить доступ в раздел реестра "path"
        {
            return -1; //отказ в доступе
        }
        if (RegDeleteTreeW(HKEY_CLASSES_ROOT, data.path) != ERROR_SUCCESS) //Пытаемся удалить раздел "path"
        {
            return -2; //ошибка удаления
        }
    }
    RegCloseKey(h);
    return 0;
}
Удаление ключа: (data.name = ключ)
C++
1
2
3
4
5
6
7
    if (RegQueryValueEx(h, TEXT(data.name), NULL, NULL, (LPBYTE)&temp.czBuf, &temp.dwBufLen) != ERROR_SUCCESS)
    {
        return -2;
    }
    
    RegDeleteValue(h, TEXT(data.name));
    RegCloseKey(h);
Удаление значения:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int DelVal(std::string _key, std::string _name)
{
 
    HKEY h;
    if (RegOpenKeyEx(HKEY_CURRENT_USER, (LPCSTR)_key.c_str(), 0,
        KEY_ALL_ACCESS, &h) != ERROR_SUCCESS)
    {
        return -1;
    }
 
    regValue temp;
    if (RegQueryValueEx(h, (LPCSTR)_name.c_str(), NULL, NULL, (LPBYTE)&temp.czBuf, &temp.dwBufLen) != ERROR_SUCCESS)
    {
        return -2;
    }
    RegDeleteValue(h, (LPCSTR)_name.c_str());
    RegCloseKey(h);
    return 0;
}
Ну и тд.
Типы данных в реестре:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#define REG_NONE                    ( 0 )   // No value type
#define REG_SZ                      ( 1 )   // Unicode nul terminated string
#define REG_EXPAND_SZ               ( 2 )   // Unicode nul terminated string
                                            // (with environment variable references)
#define REG_BINARY                  ( 3 )   // Free form binary
#define REG_DWORD                   ( 4 )   // 32-bit number
#define REG_DWORD_LITTLE_ENDIAN     ( 4 )   // 32-bit number (same as REG_DWORD)
#define REG_DWORD_BIG_ENDIAN        ( 5 )   // 32-bit number
#define REG_LINK                    ( 6 )   // Symbolic Link (unicode)
#define REG_MULTI_SZ                ( 7 )   // Multiple Unicode strings
#define REG_RESOURCE_LIST           ( 8 )   // Resource list in the resource map
#define REG_FULL_RESOURCE_DESCRIPTOR ( 9 )  // Resource list in the hardware description
#define REG_RESOURCE_REQUIREMENTS_LIST ( 10 )
#define REG_QWORD                   ( 11 )  // 64-bit number
#define REG_QWORD_LITTLE_ENDIAN     ( 11 )  // 64-bit number (same as REG_QWORD)
П.с. примеры для опоры и примерной сути.
0
1 / 1 / 2
Регистрация: 07.06.2016
Сообщений: 82
13.05.2018, 06:50  [ТС]
Спасибо, попробую переварить
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.05.2018, 06:50
Помогаю со студенческими работами здесь

Запись в реестр
Помогите, пожалуйста, как сделать, чтобы значение, введенное пользователем, записывалось в реестр? вот код char str; ...

Реестр winapi c++
Как получить список установленных программ через реестр на c++ с помощью winapi. Нужен подробный пример.

Обращение в реестр RegQueryValueEx
проблема заключается в обработке запроса RegQueryValueEx(); как ето исправить? #include &lt;stdio.h&gt; #include &lt;windows.h&gt; ...

Реестр и System.ini
Доброго времени суток! Имею такую задачу: Внести коррективы в системный файл System.ini, а именно в секцию Drivers, и создать новый...

Открыть реестр Windows7
привет, попробую задать эту тему здесь, с++ не знаю, среда есть dev c++. Мне нужно открыть реестр и поменять значение в нем, как это...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru