Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 1
Регистрация: 24.11.2013
Сообщений: 46

Работа в реестре

27.12.2013, 16:15. Показов 3128. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написать консольное приложение, выводящие на экран хранящиеся в заданном ключе реестра переменные, их типы и значения. Имена корневого и заданного ключей вводится в программу с клавиатуры.

Нужно выполнить такое задание...

Имеется код который ищет последовательно имена всех ключей, встретившихся при поиске в реестре первой переменной с заданным именем

Как отредактировать этот код под мое задание?
Спасибо заранее!

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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include <iostream>
#include <iomanip>
#include <string>
#include <windows.h>
#include <stdlib.h>
using namespace std;
 
void showInVariablesInRegistry(HKEY);
char Path[256], Root[256];
int main(){
    HKEY hKey;
    cout << "Root: ";
    cin >> Root;
    cin.sync();
    cout << "Key: ";
    cin >> Path; // branch
    cin.sync(); // so cin eat's spaces
    if (strcmp(Root, "HKEY_CLASSES_ROOT") == 0){
        RegOpenKeyEx(HKEY_CLASSES_ROOT, Path, 0, KEY_READ, &hKey);
    }
    else if (strcmp(Root, "HKEY_CURRENT_USER") == 0){
        RegOpenKeyEx(HKEY_CURRENT_USER, Path, 0, KEY_READ, &hKey);
    }
    else if (strcmp(Root, "HKEY_LOCAL_MACHINE") == 0){
        RegOpenKeyEx(HKEY_LOCAL_MACHINE, Path, 0, KEY_READ, &hKey);
    }
    else if (strcmp(Root, "HKEY_USERS") == 0){
        RegOpenKeyEx(HKEY_USERS, Path, 0, KEY_READ, &hKey);
    }
    else if (strcmp(Root, "HKEY_CURRENT_CONFIG") == 0){
        RegOpenKeyEx(HKEY_CURRENT_CONFIG, Path, 0, KEY_READ, &hKey);
    }
    else { cout << "Incorrect Root"; }
    showInVariablesInRegistry(hKey);
    return 0;
}
 
void showInVariablesInRegistry(HKEY hKey){
    string types[12] = { "REG_NONE", "REG_SZ", "REG_EXPAND_SZ", "REG_BINARY", "REG_DWORD", "REG_DWORD_BIG_ENDIAN", "REG_LINK",
        "REG_MULTI_SZ", "", "", "", "REG_QWORD" };
    DWORD lpcnumOfSubKeys = 0; // Amount of sub keys
    DWORD lpcmaxSubKeyLen = 0; //Size of sub key's
    DWORD lpcnumOfValues = 0; // A pointer to a variable that receives the number of values that are associated with the key
    DWORD lpcmaxValueNameLen = 0; // A pointer to a variable that receives the size of the key's longest value name, in Unicode characters.
    DWORD lpcmaxValueLen = 0; // f the longest data component among the key's values 
    RegQueryInfoKey(hKey, NULL, NULL, NULL, &lpcnumOfSubKeys, &lpcmaxSubKeyLen, NULL, &lpcnumOfValues, &lpcmaxValueNameLen, &lpcmaxValueLen, NULL, NULL); 
    char *valueName = new char[(int)lpcmaxValueNameLen];
    for (int i = 0; i < (int)lpcnumOfValues; i++){
        DWORD valueNameLen = lpcmaxValueNameLen + 1;
        char DataForSZ[MAX_PATH + 1] = "";
        DWORD Type, DataForDWORD;
        DWORD DataSize = MAX_PATH + 1;
        RegEnumValue(hKey, i, valueName, &valueNameLen, NULL, &Type, (BYTE*)&DataForSZ, &DataSize);
        if (types[Type] == "REG_SZ" || types[Type] == "REG_MULTI_SZ" || types[Type] == "REG_EXPAND_SZ"){            
            cout << endl << "VariableName:      " << valueName << " Type:   " << types[Type] << "   Value:  " << DataForSZ << endl << endl;
        }
        else if (types[Type] == "REG_DWORD"){
            //valueName - name; &valueNameLen - size of name; &Type - type of variable; 
            //data of variabel -(BYTE*)&DataForDWORD;  &DataSize - size of variable
            RegEnumValue(hKey, i, valueName, &valueNameLen, NULL, &Type, (BYTE*)&DataForDWORD, &DataSize);
            cout << endl << "Name:      " << valueName << " Type:   " << types[Type] << "   Value:  " << DataForDWORD << endl << endl;
        }
    }
    char *SKName = new char[(int)lpcmaxSubKeyLen];
    // check SubKey's
    for (int i = 0; i < (int)lpcnumOfSubKeys; i++){
        DWORD keyNameLen = lpcmaxSubKeyLen + 1;
        RegEnumKeyEx(hKey, i, SKName, &keyNameLen, NULL, NULL, NULL, NULL);       
        HKEY HSKey;
        RegOpenKeyEx(hKey, SKName, 0, KEY_READ, &HSKey);
        cout << "Sub Key Name: "<< SKName << endl;
        showInVariablesInRegistry(HSKey);
        system("pause");
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.12.2013, 16:15
Ответы с готовыми решениями:

Работа с параметром DWORD в реестре на vb????
Везде полно статей как запихнуть в реестр строковые параматры, но как присвоить параметру –DWORD, значение…??? очень нужно...

Работа в реестре. Ошибка записи в HKEY_LOCAL_MACHINE.
Добрый день набросал простой класс для работы с реестром. Но есть одна проблема не возможность создавать и записывать значения в...

Ошибки в реестре
Всем привет! Ситуация такая. Налазили в реестре кривыми руками и что-то там удалили типа &quot;365 usb defender&quot;. Из-за этого теперь...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.12.2013, 16:15
Помогаю со студенческими работами здесь

Ключ в реестре
Хотел спросить. Как можно создать и прочитать данные из реестра типа DWORD. Я могу делать как Строковой параметр. Но что то с DWORD у меня...

Настройки в реестре
В какой ветви рестра хрянятся параметры настройки notepad.exe (блокнот) и текстового редактора ?

Иероглифы в реестре
Создал тему https://www.cyberforum.ru/windows7/thread2230395.html и там посоветовали обратиться в раздел лечения. Логи собрал.

Иероглифы в реестре
Здравствуйте. Вообще то я не силен в реестре и поэтому стараюсь лезть в него только в самом крайнем случае и 3.04 был такой случай. К...

Ошибки в реестре
После ребута нетбука с ОС Win XP PRO SP3 выдается ряд ошибок типа Не удается ...C:/Documents, и тп. Прилагаю логи.


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru