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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
IVIakCollideR
38 / 38 / 11
Регистрация: 26.12.2013
Сообщений: 309
#1

Как изменить значение в реестре? - C++

16.03.2014, 17:00. Просмотров 891. Ответов 17
Метки нет (Все метки)

привет!
Я новичек в с++, среда разработки - dev c++/
Помогите примером, мне нужно открыть необходимую ветку реестра и поменять значение в указанной строке.
Как это можно реализовать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2014, 17:00     Как изменить значение в реестре?
Посмотрите здесь:
Как изменить в реестре стартовую страницу Internet Explorer? C++
C++ Как изменить значение строки
C++ Как изменить значение с буквы на число?
C++ Как изменить значение обьектов класса
C++ Как изменить значение глобальной переменной в процедуре?
Как изменить значение элемента массива на противоположному по знаку? C++
C++ Как изменить значение переменной, переданной в списке с переменным числом аргументов
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MicM
821 / 488 / 90
Регистрация: 29.12.2009
Сообщений: 1,097
Завершенные тесты: 1
16.03.2014, 17:06     Как изменить значение в реестре? #2
Цитата Сообщение от IVIakCollideR Посмотреть сообщение
Как это можно реализовать?
Например, с помощью WinAPI
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
Здесь есть множество функций для работы с реестром
IVIakCollideR
38 / 38 / 11
Регистрация: 26.12.2013
Сообщений: 309
16.03.2014, 17:22  [ТС]     Как изменить значение в реестре? #3
Цитата Сообщение от MicM Посмотреть сообщение
Например, с помощью WinAPI
а какой то пример можно?
Я на с++ первый день пишу, понимаю что ничего не понимаю и нужно начинать с основ, но позарез нужно открыть и изменить значение.
Создать ветку по примеру получилось, а вот открыть, никак...
MicM
821 / 488 / 90
Регистрация: 29.12.2009
Сообщений: 1,097
Завершенные тесты: 1
16.03.2014, 17:30     Как изменить значение в реестре? #4
Цитата Сообщение от IVIakCollideR Посмотреть сообщение
а какой то пример можно?
Можете в интернете примеры поискать, сам я на WinAPI ни разу не писал.
IVIakCollideR
38 / 38 / 11
Регистрация: 26.12.2013
Сообщений: 309
16.03.2014, 18:59  [ТС]     Как изменить значение в реестре? #5
Цитата Сообщение от MicM Посмотреть сообщение
Можете в интернете примеры поискать, сам я на WinAPI ни разу не писал.
та я искал, мало чего понятно

Добавлено через 26 минут
Пробовал следующим способом, но не получилось
думал будет создаваться ветка, а в случае если она уже создана то просто запишется значение в нее
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 <cstdlib>
#include <iostream>
#include <Windows.h>
#include <tchar.h>
 
using std::cout;
using std::endl;
 
#ifdef _UNICODE
#  define _tcout wcout
#else
#  define _tcout cout
#endif // _UNICODE
 
int _tmain(int argc, _TCHAR* argv[])
{
  _tsetlocale(LC_ALL, _T("Russain"));
 
  _TCHAR szTestString[] = _T("3");
 
  _TCHAR szPath[] = _T("SYSTEM\CurrentControlSet\\");
 
  HKEY hKey;
 
  if(RegCreateKeyEx(HKEY_LOCAL_MACHINE, szPath, 0, NULL, REG_OPTION_VOLATILE, KEY_WRITE, NULL, &hKey, NULL) != ERROR_SUCCESS){
    _tcout << _T("Ïðè ñîçäГ*Г*ГЁГЁ êëþ÷Г* ïðîèçîøëГ* îøèáêГ*") << endl;
    return 1;
  }
 
  // ГЏГЁГёГҐГ¬ òåñòîâóþ ñòðîêó Гў ñîçäГ*Г*Г*ûé êëþ÷
  if(RegSetValueEx(hKey, _T("Start"), 0, REG_SZ, (BYTE*)szTestString, sizeof(szTestString)) != ERROR_SUCCESS){
    _tcout << _T("Ïðè") << endl;
    return 2;
  }
Добавлено через 41 минуту
народ как открыть ветку реестра кто знает?)
uhx
57 / 57 / 6
Регистрация: 11.07.2013
Сообщений: 303
16.03.2014, 19:02     Как изменить значение в реестре? #6
Цитата Сообщение от IVIakCollideR Посмотреть сообщение
народ как открыть ветку реестра кто знает?)
Сначала выучить основы, чтобы хотя бы понимать тот код, который вы написали выше.
Кстати, так Вам нужно ее именно открыть (чтобы пользователь сам мог ее редактировать) ???
Убежденный
Системный программист
Эксперт С++
15295 / 6927 / 1096
Регистрация: 02.05.2013
Сообщений: 11,334
Завершенные тесты: 1
16.03.2014, 19:02     Как изменить значение в реестре? #7
Цитата Сообщение от IVIakCollideR Посмотреть сообщение
Помогите примером, мне нужно открыть необходимую ветку реестра и поменять значение в указанной строке.
RegOpenKeyEx -> RegSetValue -> RegCloseKey.
IVIakCollideR
38 / 38 / 11
Регистрация: 26.12.2013
Сообщений: 309
16.03.2014, 19:50  [ТС]     Как изменить значение в реестре? #8
Цитата Сообщение от Убежденный Посмотреть сообщение
RegOpenKeyEx -> RegSetValue -> RegCloseKey.
сделал, но не работает, в чем дело?
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
#include <cstdlib>
#include <iostream>
#include <Windows.h>
#include <tchar.h>
 
using std::cout;
using std::endl;
 
int _tmain(int argc, _TCHAR* argv[]){
  _tsetlocale(LC_ALL, _T("Russain"));
  _TCHAR szTestString[] = _T("4");
  _TCHAR szPath[] = _T("SYSTEM\CurrentControlSet\services\USBSTOR\\");
  HKEY hKey;
  
  if(RegOpenKeyEx (HKEY_LOCAL_MACHINE, szPath, NULL, NULL, &hKey) != ERROR_SUCCESS){
    _tcout << _T("error") << endl;
    return 1;
  }
 
  if(RegSetValueEx(hKey, _T("Start"), 0, REG_SZ, (BYTE*)szTestString, sizeof(szTestString)) != ERROR_SUCCESS){
    _tcout << _T("error") << endl;
    return 2;
  }
 
  if(RegCloseKey(hKey) != ERROR_SUCCESS){
    _tcout << _T("error") << endl;
    return 3;
  };
 
  return 0;
}
Убежденный
Системный программист
Эксперт С++
15295 / 6927 / 1096
Регистрация: 02.05.2013
Сообщений: 11,334
Завершенные тесты: 1
16.03.2014, 21:06     Как изменить значение в реестре? #9
Цитата Сообщение от IVIakCollideR Посмотреть сообщение
сделал, но не работает
"не работает" - это не описание проблемы.

Цитата Сообщение от IVIakCollideR Посмотреть сообщение
_TCHAR szPath[] = _T("SYSTEM\CurrentControlSet\services\USBSTOR\\");
В C/C++ обратный слэш нужно экранировать:
SYSTEM\\CurrentControlSet\\Services\\USBSTOR

Цитата Сообщение от IVIakCollideR Посмотреть сообщение
_tcout << _T("error") << endl;
"error" - этого слишком мало для диагностики ошибок.
Используйте GetLastError для получения кода ошибки, и программу
Error Lookup (есть в меню "Tools" Visual Studio" для расшифровки.
IVIakCollideR
38 / 38 / 11
Регистрация: 26.12.2013
Сообщений: 309
16.03.2014, 22:01  [ТС]     Как изменить значение в реестре? #10
исправил слеши.
Цитата Сообщение от Убежденный Посмотреть сообщение
"error" - этого слишком мало для диагностики ошибок.
дело не в том, оно даже не запускается, тсть ошибка еще на момент компиляции.

логи на фото.
Миниатюры
Как изменить значение в реестре?  
IVIakCollideR
38 / 38 / 11
Регистрация: 26.12.2013
Сообщений: 309
16.03.2014, 22:56  [ТС]     Как изменить значение в реестре? #11
может есть кто, кому под силу работать с реестром? хелпс)))
Убежденный
Системный программист
Эксперт С++
15295 / 6927 / 1096
Регистрация: 02.05.2013
Сообщений: 11,334
Завершенные тесты: 1
16.03.2014, 23:10     Как изменить значение в реестре? #12
Цитата Сообщение от IVIakCollideR Посмотреть сообщение
может есть кто, кому под силу работать с реестром?
Может, выложите код и ошибки компилятора перед тем, как начинать язвить ?
IVIakCollideR
38 / 38 / 11
Регистрация: 26.12.2013
Сообщений: 309
17.03.2014, 16:23  [ТС]     Как изменить значение в реестре? #13
Цитата Сообщение от Убежденный Посмотреть сообщение
Может, выложите код и ошибки компилятора перед тем, как начинать язвить ?
В СМЫСЛЕ ЯЗВИТЬ????
конкретно вопрос задал, вы не знаете, так возможно еще кто знает, мало ли люди подумали что вопрос решен и помогать ненужно уже.

И КОД И ОШИБКИ Я ВЫЛОЖИЛ.
последний лог компилятора после исправления слешей и обработчиков ошибок в предпоследнем моем посте, смотрите внимательней!

Добавлено через 15 часов 56 минут
И все таки, как открыть ветку в реестре?
MicM
821 / 488 / 90
Регистрация: 29.12.2009
Сообщений: 1,097
Завершенные тесты: 1
17.03.2014, 16:44     Как изменить значение в реестре? #14
Цитата Сообщение от IVIakCollideR Посмотреть сообщение
И все таки, как открыть ветку в реестре?
А вам принципиально надо в С++?
Просто можно,например, батник написать, который будет это делать.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.03.2014, 17:33     Как изменить значение в реестре?
Еще ссылки по теме:
C++ Как сменить в реестре отладчик на студийный
Изменить значение указателя C++
C++ Изменить значение переменной из функции
Изменить значение переменной в функции C++
Возможно ли изменить начальное значение переменной? C++

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

Или воспользуйтесь поиском по форуму:
IVIakCollideR
38 / 38 / 11
Регистрация: 26.12.2013
Сообщений: 309
17.03.2014, 17:33  [ТС]     Как изменить значение в реестре? #15
Цитата Сообщение от MicM Посмотреть сообщение
А вам принципиально надо в С++?
я просто пишу на джаве и с помощью джини буду запускать нативные функции сишки.
в принципе можно попробовать использовать батник. Если у вас есть такой, то буду благодарен.
Yandex
Объявления
17.03.2014, 17:33     Как изменить значение в реестре?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru