Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
23 / 23 / 5
Регистрация: 05.12.2013
Сообщений: 215

Очередная запись в реестр - изменения не вносятся

04.07.2014, 19:25. Показов 2222. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Столкнулся с такой проблемой - вот код на C++:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <Windows.h>
 
int WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
    char* keyPath = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon";
    char* szString = "test string"; //C:\Windows\system32\userinit.exe, C:\Windows\Setup\State\Block.exe
 
    HKEY hKey;
 
    if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, keyPath, 0, KEY_ALL_ACCESS, &hKey) != ERROR_SUCCESS) return 1;
    if (RegSetValueEx(hKey, "Shell", 0, REG_SZ, (BYTE*)szString, sizeof(szString)) != ERROR_SUCCESS) return 2;
    if (RegCloseKey(hKey) != ERROR_SUCCESS) return 3;
    
    return 0;
}
И он не работает! А что самое интересное - программа завершается с кодом "0" , а это значит, что она открывает ключ, изменяет его значение и закрывает ключ без ошибок. НО! Ничего не происходит, изменений в реестре по указанному ключу нет
Я вообще ничего не понимаю
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.07.2014, 19:25
Ответы с готовыми решениями:

После изменения GridView не вносятся изменения в БД
Значит есть GridView подсоединенный к DataSource, который в свою очередь подсоединен к БД. Данные выводятся, удаляются, но не обновляются. ...

Как сделать запись в реестр win7 64. В реестр попадает только последняя запись
Добрый вечер! Не могу сделать запись в реестр win7 64. Microsoft.Win32.RegistryKey hklm = Microsoft.Win32.Registry.LocalMachine; ...

Не вносятся изменения в базу
Здравствуйте! Помогите пожалуйста.Пишу курсовик сделала программу в делфи, подключила базу Аксесс. При попытке добавить новую запись в базу...

13
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
04.07.2014, 19:51
А права на запись туда есть?
0
23 / 23 / 5
Регистрация: 05.12.2013
Сообщений: 215
04.07.2014, 20:01  [ТС]
Ну руками я могу туда вписать, это означает, что есть права? В принципе, чем программные средства отличаются от того, что я могу с этой же учетки сделать руками...

Да и если бы не было прав, разве программа завершалась бы с кодом "0"?
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
04.07.2014, 23:02
Лучший ответ Сообщение было отмечено Nelkor как решение

Решение

Цитата Сообщение от Nelkor Посмотреть сообщение
программа завершается с кодом "0" , а это значит, что она открывает ключ, изменяет его значение и закрывает ключ без ошибок. НО! Ничего не происходит, изменений в реестре по указанному ключу нет
Навскидку: Винда 64-битная, а программа 32-битная, значит, все пишется не в
HKLM\SOFTWARE\Microsoft\..., а в HKLM\SOFTWARE\Wow6432Node\Microsoft\...

Добавлено через 48 секунд
Цитата Сообщение от Nelkor Посмотреть сообщение
Ну руками я могу туда вписать, это означает, что есть права?
Не обязательно.
1
23 / 23 / 5
Регистрация: 05.12.2013
Сообщений: 215
05.07.2014, 10:02  [ТС]
Цитата Сообщение от Убежденный Посмотреть сообщение
Навскидку: Винда 64-битная, а программа 32-битная, значит, все пишется не в
HKLM\SOFTWARE\Microsoft\..., а в HKLM\SOFTWARE\Wow6432Node\Microsoft\...
Так и есть!

Добавлено через 4 минуты
Однако, несмотря на то, что я экспериментировал с такими ключами, как Userinit и Shell, и оставил их в непотребном виде (ведь я не знал, по какому адресу они располагаются) компьютер после перезагрузки себя вёл нормально. То есть загружаемые файлы всё-таки берутся не из этой Wow6432Node, а из того пути, который без него...

Так что же с этим делать?

Добавлено через 28 минут
Как редактировать тот ключ, который я хочу?
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
05.07.2014, 11:12
RegOpenKeyEx + KEY_WOW64_64KEY или KEY_WOW64_32KEY.
0
23 / 23 / 5
Регистрация: 05.12.2013
Сообщений: 215
05.07.2014, 11:26  [ТС]
Спасибо, но не очень понятно. KEY_WOW64_64KEY где должен быть?

Добавлено через 10 минут
UPDATE!

У меня всё работает, НО только с динамическими библиотеками. При статической сборке:

Ошибка 2 error LNK2001: неразрешенный внешний символ "__imp_RegSetValueExA" D:\Cpp Projects\adder1\main.obj
Ошибка 3 error LNK2001: неразрешенный внешний символ "__imp_RegOpenKeyExA" D:\Cpp Projects\adder1\main.obj
Ошибка 4 error LNK2001: неразрешенный внешний символ "__imp_RegCloseKey" D:\Cpp Projects\adder1\main.obj

Почему это происходит и как это исправить?

P.S. Скомпоновал программу, как х64
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
05.07.2014, 11:29
Цитата Сообщение от Nelkor Посмотреть сообщение
KEY_WOW64_64KEY где должен быть?
Такие вопросы разрешаются чтением соответствующей страницы MSDN (и проходом по ссылкам):

RegOpenKeyEx function
http://msdn.microsoft.com/en-u... 85%29.aspx
0
23 / 23 / 5
Регистрация: 05.12.2013
Сообщений: 215
05.07.2014, 12:09  [ТС]
Странные вещи творятся! Использую при сборке стандартные библиотеки Windows, а программа запускается на любом компьютере без всяких DLL.
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
05.07.2014, 12:10
Цитата Сообщение от Nelkor Посмотреть сообщение
Странные вещи творятся! Использую при сборке стандартные библиотеки Windows, а программа запускается на любом компьютере без всяких DLL.
А что здесь странного ?
Разве это не должно работать именно так ?
0
23 / 23 / 5
Регистрация: 05.12.2013
Сообщений: 215
05.07.2014, 12:40  [ТС]
Ну я выше писал. У меня при статической сборке вылазят ошибки, ссылающиеся на функции операций с реестром. Поэтому я использую динамические библиотеки, и обычно в таком случае нужны DLL
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
05.07.2014, 12:45
Что значит "статическая сборка" в данном случае ? Вообще, какой компилятор,
среда, какие опции сборки ? И про какие именно DLL Вы говорите ?
0
23 / 23 / 5
Регистрация: 05.12.2013
Сообщений: 215
05.07.2014, 12:51  [ТС]
Вижуалка... В общем, обычно, когда в свойствах проекта "Использование MFC" стоит не "Использовать MFC в статической библиотеке", то после создание *.exe он при запуске на других ПК требует установки некоторых *.dll файлов.
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
05.07.2014, 13:10
А каким боком тут вообще MFC ?
У Вас код (первое сообщение темы) не использует и строчки оттуда.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.07.2014, 13:10
Помогаю со студенческими работами здесь

Не вносятся изменения в проект
Обычно не пользуюсь Visual Studio но тут пришлось делать задание. Вроде бы все работает, но теперь когда я вношу изменения в код и...

Не вносятся изменения в базу данных
я подключаю к проекту Dataset используя add new data source. Появляется файл ShoppingMallDataset.xsd. Я объявил две переменные ...

Нестабильно вносятся изменения из DGV в БД
Знаю, что этот вопрос задавался уже over 9000 раз. Однако решил уточнить еще один раз. Загружаю таблицу в DVG вот так: private...

Как Корректно Вносятся Изменения В Работающую Программу 1с:8
доброго времени суток всем. заранее извиняюсь, если где-то это есть на форуме, но найти не смог, поэтому создал тему. Подскажите,...

На другом компьютере в проект не вносятся изменения, перестроение не помогает
Доброго времени суток. Стоит MS Visual Studio 2008 Professional, начал делать проект, потом скинул на флэшку всю папку, решил продолжить на...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
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 на бесплатный. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru