Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

привет!
Я новичек в с++, среда разработки - dev c++/
Помогите примером, мне нужно открыть необходимую ветку реестра и поменять значение в указанной строке.
Как это можно реализовать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2014, 17:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как изменить значение в реестре? (C++):

Как изменить в реестре стартовую страницу Internet Explorer? - C++
Подскажите пожалуйста как можно с помощью с++ в реестре изменить стартовую страницу Internet Explorer Я написал программу int main(){ ...

Как можно менять значение в реестре? - C++
как можно менять значение в реестре если можно то примерчик

Как изменить значение строки - C++
есть структура Struct MyStruct { String s; } можно ли изменить значение строки в ней внутри метода класса если она...

Как изменить значение обьектов класса - C++
Начал делать адвенчер. Перемещение есть, но когда нажимаешь "е" чтобы ударить то значение жизней дракона не изменяется. Мне сказали что "Не...

Как изменить значение с буквы на число? - C++
Kak mne perevsti A,B,C.... v cootvetstvyushii nomer primer: A-10 B-20 ... Z-26 Prichem diny moego snacheniya ya ne bydy snat?

Как изменить значение глобальной переменной в процедуре? - C++
Как изменить значение глобальной переменной в процедуре? #include <iostream> using std:: cin; using std:: cout; using std::...

17
MicM
822 / 480 / 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
Здесь есть множество функций для работы с реестром
1
IVIakCollideR
38 / 38 / 11
Регистрация: 26.12.2013
Сообщений: 309
16.03.2014, 17:22  [ТС] #3
Цитата Сообщение от MicM Посмотреть сообщение
Например, с помощью WinAPI
а какой то пример можно?
Я на с++ первый день пишу, понимаю что ничего не понимаю и нужно начинать с основ, но позарез нужно открыть и изменить значение.
Создать ветку по примеру получилось, а вот открыть, никак...
0
MicM
822 / 480 / 90
Регистрация: 29.12.2009
Сообщений: 1,097
Завершенные тесты: 1
16.03.2014, 17:30 #4
Цитата Сообщение от IVIakCollideR Посмотреть сообщение
а какой то пример можно?
Можете в интернете примеры поискать, сам я на WinAPI ни разу не писал.
0
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 минуту
народ как открыть ветку реестра кто знает?)
0
uhx
60 / 60 / 6
Регистрация: 11.07.2013
Сообщений: 304
16.03.2014, 19:02 #6
Цитата Сообщение от IVIakCollideR Посмотреть сообщение
народ как открыть ветку реестра кто знает?)
Сначала выучить основы, чтобы хотя бы понимать тот код, который вы написали выше.
Кстати, так Вам нужно ее именно открыть (чтобы пользователь сам мог ее редактировать) ???
0
Убежденный
Ушел с форума
Эксперт С++
15697 / 7207 / 1139
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
16.03.2014, 19:02 #7
Цитата Сообщение от IVIakCollideR Посмотреть сообщение
Помогите примером, мне нужно открыть необходимую ветку реестра и поменять значение в указанной строке.
RegOpenKeyEx -> RegSetValue -> RegCloseKey.
0
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;
}
0
Убежденный
Ушел с форума
Эксперт С++
15697 / 7207 / 1139
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 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" для расшифровки.
1
IVIakCollideR
38 / 38 / 11
Регистрация: 26.12.2013
Сообщений: 309
16.03.2014, 22:01  [ТС] #10
исправил слеши.
Цитата Сообщение от Убежденный Посмотреть сообщение
"error" - этого слишком мало для диагностики ошибок.
дело не в том, оно даже не запускается, тсть ошибка еще на момент компиляции.

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

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

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

Как изменить значение элемента массива на противоположному по знаку? - C++
Здравствуйте. Пишу консольку на VC++. По условии задачи есть массив размерностью 100 целых чисел(одномерный).Заполняется рандомно....

Как изменить значение переменной, переданной в списке с переменным числом аргументов - C++
Помогите!!! Начал изучать С++ Возникла такая проблема. Когда мне нужно получить доступ к переменному числу аргументов я делаю что-то...

Как сменить в реестре отладчик на студийный - C++
Как сминить отладчик Отладчик Дельфи прописан в редакторе реестра вот так. (Реестр находится выполнить-regedit-ОК) Адрес прописки...

Изменить значение указателя - C++
Рылся в поиске - не помогло. Вообщем проблема дурацкая char *temp; temp=&quot;asdf&quot;; cout&lt;&lt;temp; // все идет нормально temp='A'; // не...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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