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

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

30.04.2015, 11:09. Показов 6712. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, не могу понять, почему не открывается ветка в реестре ?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "stdafx.h"
#include <stdio.h>
#include <windows.h>
#include <iostream>
 
 
int _tmain(int argc, _TCHAR* argv[])
{
        HKEY rKey;
    _TCHAR Reget[256]={0};
    LONG res;
    DWORD RegetPath=sizeof (Reget);
    if ((res = RegOpenKeyExW(HKEY_LOCAL_MACHINE,L"SOFTWARE\\Microsoft\\Windows\\COM3", 0, KEY_ALL_ACCESS,
                                                                                                                              &rKey))=ERROR_SUCCESS)
    {
        RegQueryValueEx(HKEY_LOCAL_MACHINE,L"BuildType", NULL, NULL,(LPBYTE)Reget, &RegetPath);
        RegCloseKey(rKey);
                printf("%s\n",Reget);
    }
    else{ MessageBox(NULL,L"Ошибка получения информации о ключе",NULL,NULL); }
    getchar();
    return 0;
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.04.2015, 11:09
Ответы с готовыми решениями:

Работа с реестром
Здравствуйте. Возникла проблема с чтением реестра :( Вместо нормального текста либо пустая строка, либо вопросительные знаки. Вот код: ...

Работа с реестром
Здравствуйте . Возникла такая задача: нужно , чтобы при запуске оконного приложения , после того , как пользователь меняет размер окна его...

Работа с реестром
Доброго времени суток! Такой вопрос: Функция RegSetValue( rKey, 0, REG_SZ, currentDirectory, sizeof(currentDirectory) ); создает...

8
529 / 432 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
30.04.2015, 11:16
Цитата Сообщение от Serg5467 Посмотреть сообщение
почему не открывается ветка в реестре
Не можешь понять, потому что не смотришь на код, который вернула RegOpenKeyExW. Тебе нужен ответ, который у тебя под носом лежит.
0
46 / 31 / 12
Регистрация: 21.04.2015
Сообщений: 82
30.04.2015, 11:34
На самом деле ответов может быть несколько.

Во-первых, ошибка в коде
C++
1
&rKey))=ERROR_SUCCESS)
вместо
C++
1
&rKey))==ERROR_SUCCESS)
Во-вторых, доступ к ветке HKEY_LOCAL_MACHINE с доступом KEY_ALL_ACCESS может получить только программа, запущенная от имени администратора. Вы только читаете значение, значит надо использовать KEY_QUERY_VALUE или KEY_READ.

В-третьих, 32 битная программа, запущенная на 64-битной системе, по-умолчанию перенаправляется в подветку HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node, в которой может не быть нужного ключа. В этом случае надо использовать флаг KEY_WOW64_64KEY.
3
529 / 432 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
30.04.2015, 11:47
Проверка кода возврата все покажет
1
46 / 31 / 12
Регистрация: 21.04.2015
Сообщений: 82
30.04.2015, 11:51
Velesthau, да там сто пудов access denied либо not found.
1
1 / 1 / 0
Регистрация: 27.04.2015
Сообщений: 23
30.04.2015, 11:52  [ТС]
Задал флаг KEY_WOW64_64KEY, код ошибки посмотрел через GetLastError и всё равно нет доступа к ветке
C++
1
2
3
4
5
if ((res = RegOpenKeyExW(HKEY_LOCAL_MACHINE,L"SOFTWARE\\Microsoft\\Windows\\COM3",NULL,KEY_QUERY_VALUE && KEY_WOW64_64KEY, &rKey))==ERROR_SUCCESS)
{
   /********************************/
}
else{wprintf(L"Error Code 0x%x\n",GetLastError());}
0
46 / 31 / 12
Регистрация: 21.04.2015
Сообщений: 82
30.04.2015, 11:56
Лучший ответ Сообщение было отмечено Serg5467 как решение

Решение

Serg5467, у вас 64 битная система?
Надо использовать бинарный оператор "|":
C++
1
KEY_QUERY_VALUE | KEY_WOW64_64KEY
>код ошибки посмотрел через GetLastError
GetLastError ничего не вернет, смотрите значение переменной res. И приведите её значение здесь, чтобы мы могли понять, в чём проблема.
1
529 / 432 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
30.04.2015, 12:00
Цитата Сообщение от Serg5467 Посмотреть сообщение
код ошибки посмотрел через GetLastError
GetlastError тут при чем? В документации черным по белому написано, что код ошибки - это код возврата функции и ни слова про GetLastError.
1
1 / 1 / 0
Регистрация: 27.04.2015
Сообщений: 23
30.04.2015, 12:29  [ТС]
->GetLastError ничего не вернет, смотрите значение переменной res. И приведите её значение здесь, чтобы мы могли понять, в чём проблема.
->GetlastError тут при чем? В документации черным по белому написано, что код ошибки - это код возврата функции и ни слова про GetLastError.

else{ wprintf(L"res = %d\n",res);}

res = 2

Посмотрел в msdn, там код ошибки, объявленный в WINERROR.H.
#define ERROR_SUCCESS 0L
#define ERROR_INVALID_FUNCTION 1L [fail]
#define ERROR_FILE_NOT_FOUND 2L [fail]
#define ERROR_PATH_NOT_FOUND 3L [fail]
#define ERROR_TOO_MANY_OPEN_FILES 4L [fail]
#define ERROR_ACCESS_DENIED 5L [fail]
#define ERROR_INVALID_HANDLE 6L [fail]
#define ERROR_ARENA_TRASHED 7L [fail]
#define ERROR_NOT_ENOUGH_MEMORY 8L [fail]
#define ERROR_INVALID_BLOCK 9L [fail]
#define ERROR_BAD_ENVIRONMENT 10L [fail]
#define ERROR_BAD_FORMAT 11L [fail]
........................................ .......................................

Я так понимаю ф-я не может найти ветку HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\ \Windows\\COM3.

Добавлено через 16 минут
Всё разобрался, помог бинарный оператор "|". Всем спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.04.2015, 12:29
Помогаю со студенческими работами здесь

Работа с реестром
Здравствуйте! Вот в этом цикле происходит запись хэша пароля в (unsigned int)HashData. for (int i = 0; i &lt; HASH_SIZE; i++) ...

Работа с реестром
Необходимо узнать про все установленные графические редакторы через реестр. Так же где найти в реестре версию установленного Excel. ...

Работа с реестром
У кого-нибудь есть рабочая программа, которая демонстрирует работу с реестром? (чтение из реестра, сохранение в него, удаление, добавление...

Работа с реестром, читаем типы REG_BINARY и REG_MULTI_SZ
Ребятушки! Нид хелп! Нужно считать с реестра ключи типов REG_DWORD, REG_QWORD, REG_SZ, REG_EXPAND_SZ, REG_MULTI_SZ и REG_BINARY. ...

Помогите с реестром)))
Создать SDI-приложение с пунктами меню Save, Load,Un_Load. При выборе Save ,создаются элементы ключа,КОТОРЫЕ ПОТОМ ДОЛЖНЫ СОХРАНЯТьСЯ В...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru