Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.63/19: Рейтинг темы: голосов - 19, средняя оценка - 4.63
3 / 3 / 0
Регистрация: 11.11.2010
Сообщений: 38

реестр

02.02.2011, 21:11. Показов 3789. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
не могу найти исходники программы на visual c++
которые бы добавляли программу в авто запуск реестров и какую библиотек для этого надо подключить
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.02.2011, 21:11
Ответы с готовыми решениями:

Реестр С++
Здравствуйте. У меня такой вопрос: Есть два консольных приложения С ++ одно выводит элементы массива, другое выполняет действия над его...

Реестр!
Нужно програмно изменить в реестре значение параметра...

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

25
59 / 59 / 2
Регистрация: 22.01.2011
Сообщений: 187
02.02.2011, 21:24
Skip, ветка эта "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\W indows\CurrentVersion\Run"
Цитата Сообщение от Skip Посмотреть сообщение
какую библиотек для этого надо подключить
если знаком с WinAPI ничего подключать не надо.
функции RegCreateKey, RegSetValue, Reg.....
0
3 / 3 / 0
Регистрация: 11.11.2010
Сообщений: 38
02.02.2011, 22:22  [ТС]
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
#include "stdafx.h"
#include <iostream>
using namespace std;
#include <windows.h>
#include <conio.h>
#include <tchar.h>
 
 
int main()
{
    HKEY hKey;
    unsigned char szStr[2];
    szStr[0]='1'; szStr[1]='\0'; 
 
    if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"), 0, KEY_ALL_ACCESS, &hKey)!=ERROR_SUCCESS)
        cout<<"oshibka.\n";
    else
    {
        if (RegSetValueEx(hKey, TEXT("my_program","C:\program.exe"), NULL, REG_SZ, szStr, sizeof(szStr))==ERROR_SUCCESS)
            cout<<"razdel otkrit uspeshno.\n";
        else
            cout<<"oshibka#2.\n";
    }
    RegCloseKey(hKey);
 
    getch();
}
он у меня в первом же цикле выдает ошибку , тоесть он не может открыть раздел
напишите как правильно добавить программу в авто запуск

Добавлено через 23 минуты
help , а то в реестрах не разбираюсь
0
59 / 59 / 2
Регистрация: 22.01.2011
Сообщений: 187
02.02.2011, 22:29
C
1
RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"), 0, KEY_ALL_ACCESS, &hKey)
char *val = TEXT("C:\\program.exe");
C
1
RegSetValueEx(hKey, TEXT("my_program"), NULL, REG_SZ, val, lstrle(val))
0
3 / 3 / 0
Регистрация: 11.11.2010
Сообщений: 38
03.02.2011, 03:45  [ТС]
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
#include "stdafx.h"
#include <iostream>
using namespace std;
#include <windows.h>
#include <conio.h>
#include <tchar.h>
 
int main()
{
    char *val = TEXT("D:\Visual Studio 2008\Projects\6\Release\6++.exe");
 
    HKEY hKey;
 
    if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"), 0, KEY_ALL_ACCESS, &hKey)!=ERROR_SUCCESS)
        cout<<"oshibka.\n";
    else
    {
    RegSetValueEx(hKey, TEXT("Mydream"), NULL, REG_SZ, val, lstrle(val));
    }
   
    RegCloseKey(hKey);
 
    getch();
}
он у меня почему то ее не компилирует
0
59 / 59 / 2
Регистрация: 22.01.2011
Сообщений: 187
03.02.2011, 03:50
Skip, компилятор поди ругается))), слеш \ он же так пишется "\\".
C
1
char *val = TEXT("D:\\Visual Studio 2008\\Projects\\6\\Release\\6++.exe");
0
3 / 3 / 0
Регистрация: 11.11.2010
Сообщений: 38
03.02.2011, 03:59  [ТС]
он ругается на
C++
1
char *val = TEXT("D:\\Visual Studio 2008\\Projects\\6\\Release\\6++.exe");
и говорит вот это :
1>.\перезагрузка компа.cpp(10) : error C2440: инициализация: невозможно преобразовать 'const wchar_t [49]' в 'char *'

и на
C++
1
RegSetValueEx(hKey, TEXT("Mydream"), NULL, REG_SZ, val, lstrle(val));
, выдает 1>.\перезагрузка компа.cpp(18) : error C3861: lstrle: идентификатор не найден
0
59 / 59 / 2
Регистрация: 22.01.2011
Сообщений: 187
03.02.2011, 04:12
Цитата Сообщение от Skip Посмотреть сообщение
1>.\перезагрузка компа.cpp(10) : error C2440: инициализация: невозможно преобразовать 'const wchar_t [49]' в 'char *'
Ну это потому что проект у тебя UNICODE.
ришение:
C
1
TCHAR val = TEXT(....) или wchar_t *val = L"...."
Цитата Сообщение от Skip Посмотреть сообщение
выдает 1>.\перезагрузка компа.cpp(18) : error C3861: lstrle: идентификатор не найден
похоже я ошибся
C
1
lstrlen
не обессуть, не внимателен.

Добавлено через 2 минуты
точно не внимателен)
Цитата Сообщение от bobrovskii Посмотреть сообщение
TCHAR val = TEXT(....) или wchar_t *val = L"...."
C
1
TCHAR *val = TEXT(....) или wchar_t *val = L"...."
1
3 / 3 / 0
Регистрация: 11.11.2010
Сообщений: 38
03.02.2011, 14:27  [ТС]
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
#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include <conio.h>
using namespace std;
 
int main()
{
    TCHAR *val=_T("C:\\myprogramm.exe");
    DWORD size=_tcslen(val);
    
    HKEY hKey;
 
        if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"), 0, KEY_ALL_ACCESS, &hKey)!=ERROR_SUCCESS)
                cout<<"Error #1\n";
        else
        {
        if (RegSetValueEx(hKey, TEXT("Mydream"), NULL , REG_SZ, (BYTE*)val,2*size)==ERROR_SUCCESS)
        {
            cout<<"dobavlena v reestr \n";
        }
        else
            cout<<"Error #2 \n";
        }
   
        RegCloseKey(hKey);
 
        getch();
}
в итоге , только такой код заработал
а как научить программу , что бы она себя находила в системе и добавляла в реестр
0
59 / 59 / 2
Регистрация: 22.01.2011
Сообщений: 187
03.02.2011, 14:45
Skip, GetModuleFileName знаком с ней?

Добавлено через 11 минут
С ее помощью получиш полный путь к своему ексешнику, ну а далее в реестр загоняй.
0
3 / 3 / 0
Регистрация: 11.11.2010
Сообщений: 38
03.02.2011, 15:23  [ТС]
Цитата Сообщение от bobrovskii Посмотреть сообщение
Skip, GetModuleFileName знаком с ней?

Добавлено через 11 минут
С ее помощью получиш полный путь к своему ексешнику, ну а далее в реестр загоняй.
пока такая ересь
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "stdafx.h"
#include <iostream>
#include <Windows.h>
#include <conio.h>
using namespace std;
 
 
  TCHAR szPath[MAX_PATH];
 
int main()
{
     if( !GetModuleFileName( NULL, szPath, MAX_PATH ) )
    {
        cout<< "Error\n";
    }
     else
     {
         cout << szPath;
     }
     getch();
     return 0;
}
и выдает он 00D58148
0
59 / 59 / 2
Регистрация: 22.01.2011
Сообщений: 187
03.02.2011, 15:32
Skip, у тебя поди проект в UNICODе cout поддерживает UNICOD?
а GetModuleFileName( NULL, szPath, MAX_PATH ) - верный код.
попробуй szPath на MessageBox вывести для проверки, я не вкурсе cout держит юни.
0
3 / 3 / 0
Регистрация: 11.11.2010
Сообщений: 38
03.02.2011, 16:09  [ТС]
все равно выдает
я даже пробовал подключить библиотеку tchar.h
и присвоить
C++
1
val = TEXT(szPath);
, но толку тоже ноль
0
59 / 59 / 2
Регистрация: 22.01.2011
Сообщений: 187
03.02.2011, 16:15
Что ты там присваиваеш val = szPath это что ли?
Это тебе не AnsiString, покажи код пожайлуста и что пишет компилятор?
0
3 / 3 / 0
Регистрация: 11.11.2010
Сообщений: 38
03.02.2011, 16:29  [ТС]
Цитата Сообщение от bobrovskii Посмотреть сообщение
Что ты там присваиваеш val = szPath это что ли?
Это тебе не AnsiString, покажи код пожайлуста и что пишет компилятор?
ну да так
а если попробовать
C++
1
strcpy(val , szPath);
0
59 / 59 / 2
Регистрация: 22.01.2011
Сообщений: 187
03.02.2011, 16:39
ну да, метод тод же, только в твоем случае
C
1
_tcscpy
Добавлено через 3 минуты
опс а val у тебя же вроде константный а не массив.
что тебе мешает RegSetValueEx отдать szPath? меньше переменых объявленых.
0
3 / 3 / 0
Регистрация: 11.11.2010
Сообщений: 38
03.02.2011, 17:00  [ТС]
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
#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include <conio.h>
using namespace std;
 
int main()
{
    TCHAR szPath[MAX_PATH];
    DWORD size=_tcslen(szPath);
 
     if( !GetModuleFileName( NULL, szPath, MAX_PATH ) )
    {
        cout<< "Error\n";
    }
 
    HKEY hKey;
 
        if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"), 0, KEY_ALL_ACCESS, &hKey)!=ERROR_SUCCESS)
                cout<<"Error #1\n";
        else
        {
        if (RegSetValueEx(hKey, TEXT("Mydream"), NULL , REG_SZ, (BYTE*)szPath,2*size)==ERROR_SUCCESS)
        {
            cout<<"dobavlena v reestr \n";
        }
        else
            cout<<"Error #2 \n";
        }
   
        RegCloseKey(hKey);
 
 
        getch();
        return 0;
}
почему то даже раздел в реестрах не создает , а так то значение присваивает
0
59 / 59 / 2
Регистрация: 22.01.2011
Сообщений: 187
03.02.2011, 17:13
если присваивает значит все ок! ты где смотриш в regedit?
если он открыт а пускаеш прогу, то после нажми F5 "обновить".
и оптемизируй так:
C
1
2
DWORD size;
if( !(size = GetModuleFileName( NULL, szPath, MAX_PATH )) )
GetModuleFileName возрашает кол. байт.
и
C
1
RegSetValueEx(hKey, TEXT("Mydream"), NULL , REG_SZ, (BYTE*)szPath,size)
зачем на 2 умнажаеш?
0
3 / 3 / 0
Регистрация: 11.11.2010
Сообщений: 38
03.02.2011, 17:31  [ТС]
ну он в реестр добавил d:\vs\res\ , а сам исполняемый файл он не добавляет
надо что то подобное strcat(szPath , "programm.exe")
0
59 / 59 / 2
Регистрация: 22.01.2011
Сообщений: 187
03.02.2011, 17:39
Это потому что:

Цитата Сообщение от Skip Посмотреть сообщение
TCHAR szPath[MAX_PATH];
DWORD size=_tcslen(szPath);
if( !GetModuleFileName( NULL, szPath, MAX_PATH ) )
{
cout<< "Error\n";
}
ты size как получаеш? у тебя там нет ничего "пусто" и размер в RegSetValueEx уходит неверный!
сделай как я писал выше а именно:


Цитата Сообщение от bobrovskii Посмотреть сообщение
1
2 DWORD size;
if( !(size = GetModuleFileName( NULL, szPath, MAX_PATH )) )
GetModuleFileName возрашает кол. байт.
и
Код C1 RegSetValueEx(hKey, TEXT("Mydream"), NULL , REG_SZ, (BYTE*)szPath,size)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.02.2011, 17:39
Помогаю со студенческими работами здесь

Реестр
Скажем есть ключ реестра HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\SessionManager\Environment в regedit нашел что переменная path...

Реестр
Не могу открыть реестр пишет заблокировано администратором

Запись в реестр
Создал CLR приложение...добавил файл Settings.h и засунул туда следующий код void SaveSet() { HKEY hKey=0; ...

Реестр, кнопка и c++
Народ помгите пожалуйста! Мучаюсь уже несколько дней. Надо сделать чтобы обычной кнопкой на форме менялось значение ключа реестра. ...

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
YAFU@home — распределённые вычисления для математики. На CPU
Programma_Boinc 20.01.2026
YAFU@home — распределённые вычисления для математики. На CPU YAFU@home — это BOINC-проект, который занимается факторизацией больших чисел и исследованием aliquot-последовательностей. Звучит. . .
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru