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

автозагрузка ч/з регистр

03.12.2013, 15:47. Показов 2757. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть функция записи в регистр на автозагрузку. Решение строит, запускает, все работает, кроме нее. Просто не записывает и все. можете подсказать, в чем дело? VisualStudio2012
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void Registry(void)
{ 
    HKEY hKey = HKEY_LOCAL_MACHINE; 
 
    LPCTSTR lpSubKey = L"Software\\Microsoft\\Windows\\CurrentVersion\\Run"; 
 
    DWORD dwType = REG_SZ; 
    HKEY key; 
 
    RegOpenKeyEx(hKey,lpSubKey,0,KEY_WRITE,&key); 
 
    TCHAR pfad[MAX_PATH]; 
    GetModuleFileName(NULL,pfad,MAX_PATH);
 
    RegSetValueEx(key,L"KeySpy",0,REG_SZ ,(LPBYTE)pfad,strlen((char*)pfad));
    RegCloseKey(key);
}
и да, на случай троллинга, в главной функции я ее потом вызываю.

есть еще такой. тоже не работает.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
HKEY hKey;
    TCHAR szPath [MAX_PATH];
    GetModuleFileName (NULL, szPath, sizeof(szPath));
    //если не открывается, значит создаем и прописываем
    if (!RegOpenKeyEx (HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", NULL, KEY_WRITE, &hKey))
    {
        cout << "Zapisi v reestre net" << endl;
        getch();
    
        RegCreateKeyEx (HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", NULL, L"", REG_OPTION_NON_VOLATILE, KEY_SET_VALUE, NULL, &hKey, NULL);
         }
        if (hKey)
        {
            RegSetValueEx (hKey, L"autorun_kursach", NULL, REG_SZ, (LPBYTE) szPath, strlen((char*) szPath));
            RegCloseKey (hKey);
        }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.12.2013, 15:47
Ответы с готовыми решениями:

FASM Регистр. Автозагрузка программы
Скажите пожалуйста, а как сделать так чтобы пррограмма себя приписывала в регистре? Пожалуйста кидайте весь код.

Регистр сведений «Списанные материалы из эксплуатации». Почему регистр сведений, а не регистр накопления?
Существует Регистр сведений «Списанные материалы из эксплуатации». Регистр сведений предназначен для отражения данных, необходимых при...

Даны два числа. Записать в регистр SI меньшее, а в регистр DI - большее из них
Даны два числа. Записать в регистр SI меньшее, а в регистр DI - большее из них.

26
87 / 86 / 27
Регистрация: 04.10.2012
Сообщений: 355
03.12.2013, 16:43
Права доступа. Попробуй свое приложение от имени администратора запустить.

Не по теме:

Registry по-русски - это "реестр", а не "регистр".

0
 Аватар для FreeMan108
121 / 121 / 32
Регистрация: 04.03.2013
Сообщений: 370
03.12.2013, 19:18
Читаем
RegOpenKeyEx

Исправляем

C++
1
if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", NULL, KEY_WRITE, &hKey))
Добавлено через 2 минуты
Да и вообще, в народе говорят "реестр", а не "регистр".
0
3 / 3 / 1
Регистрация: 08.10.2011
Сообщений: 73
03.12.2013, 23:36  [ТС]
да, извините, РЕЕСТР, постоянно путаю. если честно, то вообще первый раз сталкиваюсь с работой с ним.
FreeMan108, а что у меня не так? сравнила строчки. У меня if (!RegOpen....) только. если не открывается ключ, то пишет что нет записи и RegCreate.

Добавлено через 10 минут
mytilus, попробовала, перезагрузила бук, эффекта ноль=((((((

Добавлено через 38 секунд
FreeMan108, кажется поняла я вас только со второго раза=) сейчас буду пытаться искать ошибку.

Добавлено через 3 минуты
FreeMan108, перечитала. не нашла.
0
43 / 40 / 2
Регистрация: 21.09.2009
Сообщений: 145
04.12.2013, 00:15
HKEY_LOCAL_MACHINE
заменить на HKEY_CURRENT_USER
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
04.12.2013, 09:28
nadyush-princes, во-первых, сделайте нормальную обработку ошибок.
Нормальную - это когда проверяются возвращаемые значения всех функций.
То есть, RegOpenKeyEx, GetModuleFileName и RegSetValueEx в первом примере.

Во-вторых, сильное подозрение вызывает вот эта строка:
C++
1
RegSetValueEx(key,L"KeySpy",0,REG_SZ ,(LPBYTE)pfad,strlen((char*)pfad));
Подозреваю, что pfad - это wchar_t-строка, т.е. здесь нужно не strlen звать, а wcslen.
Кроме этого, не забывайте, что завершающий ноль тоже следует хранить в REG_SZ,
поэтому правильно будет так: "LPBYTE(wcslen(pfad) + 1)".

В-третьих, для правильной работы этого кода (запись в HKLM) нужны права администратора.
Если у Вас Windows Vista или выше, в программе должен быть манифест, в котором был бы
прописан требуемый уровень прав. Конкретнее - requireAdministrator. Обсуждалось многократно,
как на этом форуме, так и на многих других. Если манифеста нет, операция формально может
завершиться успехом, однако запись будет выполнена не в HKLM, а в специальный виртуальный
раздел реестра.

В-четвертых, если система 64-битная, а программа 32-битная, ищите свой ключик здесь:
HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run
0
3 / 3 / 1
Регистрация: 08.10.2011
Сообщений: 73
04.12.2013, 15:19  [ТС]
Убежденный, в функции
C++
1
RegCreateKeyEx (HKEY_LOCAL_MACHINE, L"HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", NULL, L"", REG_OPTION_NON_VOLATILE, KEY_SET_VALUE, NULL, &key, NULL);
выдает 87 ошибку. поиск в инете - 87: Параметр задан неверно.
мне кажется проблемы с аргументом lpClass....

запускала с правами администратора, то же самое
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
04.12.2013, 15:22
Цитата Сообщение от nadyush-princes Посмотреть сообщение
мне кажется проблемы с аргументом lpClass...
Попробуйте lpClass = NULL.
0
3 / 3 / 1
Регистрация: 08.10.2011
Сообщений: 73
04.12.2013, 15:24  [ТС]
то есть пытаюсь его сначала открыть, он выдает ошибку "не удается найти указанный файл", тогда я его создаю.

на всякий случай проверила, вдруг программа 32битная, то же самое.

Добавлено через 1 минуту
Цитата Сообщение от Убежденный Посмотреть сообщение
Попробуйте lpClass = NULL.
не помогло
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
04.12.2013, 15:27
Цитата Сообщение от nadyush-princes Посмотреть сообщение
C++
1
RegCreateKeyEx (HKEY_LOCAL_MACHINE, L"HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", NULL, L"", REG_OPTION_NON_VOLATILE, KEY_SET_VALUE, NULL, &key, NULL);
А где экранирование обратных слэшей ?
0
3 / 3 / 1
Регистрация: 08.10.2011
Сообщений: 73
04.12.2013, 15:41  [ТС]
Убежденный,
C++
1
RegCreateKeyEx (HKEY_LOCAL_MACHINE, L"HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", NULL, NULL, REG_OPTION_NON_VOLATILE, KEY_SET_VALUE, NULL, &key, NULL);
результат тот же самый
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
04.12.2013, 15:44
Какой код возвращает RegCreateKeyEx ?

Цитата Сообщение от nadyush-princes Посмотреть сообщение
RegCreateKeyEx (HKEY_LOCAL_MACHINE, L"HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVer sion\\Run", NULL, NULL, REG_OPTION_NON_VOLATILE, KEY_SET_VALUE, NULL, &key, NULL);
Выделенное нужно убрать.
1
3 / 3 / 1
Регистрация: 08.10.2011
Сообщений: 73
04.12.2013, 16:00  [ТС]
Убежденный, отлично, той ошибки больше нет. теперь появилась новая в функции
C++
1
GetModuleFileName(NULL,pfad,MAX_PATH);
81 ошибка, и не могу найти ее описание(
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
04.12.2013, 16:02
Что возвращает GetModuleFileName ?
0
3 / 3 / 1
Регистрация: 08.10.2011
Сообщений: 73
04.12.2013, 16:31  [ТС]
Убежденный, да. я дурочка. она возвращает длину строки. значит все норм.
RegSetValueEx возвращает 0. тоже норм.
дальше идет RegCloseKey(key);
и из всей функции вроде как выходит в основную программу. сейчас выключу ноут, проверю....

Добавлено через 15 минут
и она не работает. ткнула на самом ехешнике "запустить от имени администратора". перезагрузила. ничего не изменилось.
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
04.12.2013, 17:10
А что должно было измениться ?
Вообще, нельзя ли давать чуть больше информации по ошибкам ?
"Не работает" - это самое поверхностное описание, которое только можно придумать.

Кстати, если файловые пути, указанные в командной строке, содержат пробелы, они
должны быть заключены в кавычки. Например, не
Code
1
C:\Program Files\My Program\MyExe.exe -minimized
а
Code
1
"C:\Program Files\My Program\MyExe.exe" -minimized
И еще командная строка в ключе Run не должна иметь двойных слэшей.
0
3 / 3 / 1
Регистрация: 08.10.2011
Сообщений: 73
04.12.2013, 19:31  [ТС]
Убежденный, я нахожу в проектах вижл студии свой проект, открываю папку debug, нахожу программу, тыкаю на нее правой кнопкой мыши "запуск от имени администратора", она отрабатывает (программа состоит из автозагрузки и запуска другой программы), т.е. другая программа запускается, я все закрываю, выключаю ноутбук, включаю его, при включении вылазит антивирус и торрент. больше ничего.

Добавлено через 1 минуту
а должна еще моя программа, которая запустит калькулятор и останется висеть
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
04.12.2013, 20:04
Откройте редактор реестра (Пуск -> Выполнить -> regedit), зайдите в раздел
HKLM\SOFTWARE\Microsoft\Windows\CurrentV ersion\Run и скопируйте сюда
значение, которое Ваша программа в этот раздел записывает.
0
3 / 3 / 1
Регистрация: 08.10.2011
Сообщений: 73
05.12.2013, 09:33  [ТС]
Убежденный, программа называется autorun.exe. как я понимаю, она вообще ничего не записывает....
Миниатюры
автозагрузка ч/з регистр  
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
05.12.2013, 09:58
Windows у Вас 32-разрядная или 64-разрядная ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.12.2013, 09:58
Помогаю со студенческими работами здесь

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

Поместить в регистр BX константу 100 (16). Старший байт BX переместить в регистр BL
здраствуйте помогите пож-та разобраться в задаче!написал прогу но не работает! Поместить в регистр BX константу 100(16) . Старший байт BX...

(MCS-51) Внести в регистр А двоично-десятичное число XX, в регистр R5 — XX
Внести в регистр А двоично-десятичное число XX, в регистр R5 - XX, попеременно отображать эти числа на первом и втором знакоместе...

Регистр сведений. Регистр накоплений
Здравствуйте! Нужна помощь в создании (и настройки работы) регистра сведений и регистра накопления. Я с трудом могу понять как они...

Регистр флагов в обычный регистр
Можно ли положить регистр флагов в обычный регистр (допустим, eax)? (для дальнейшего вывода на экран) Если да, то как правильно это...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
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