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

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

Войти
Регистрация
Восстановить пароль
 
Илларион
8 / 8 / 0
Регистрация: 05.06.2011
Сообщений: 97
#1

Неудается добавить в автозагрузку! - C++

26.08.2011, 21:41. Просмотров 702. Ответов 8
Метки нет (Все метки)

Привет всем! Такая проблема. Пытаюсь средствами С++ добавить прогу в автозагрузку, в итоге не получается, выдает код ошибки 87, смотрел по winerror - это ERROR_INVALID_PARAMETER. В чем проблема? Вроде, все правильно делаю... Вот исходник
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
HKEY hKey = HKEY_LOCAL_MACHINE; 
    
     TCHAR *sKey = (TCHAR *)"Software\\Microsoft\\Windows\\CurrentVersion\\Run";
    LONG a = RegCreateKeyEx(hKey, 
                     sKey, 
                     NULL, 
                     NULL, 
                     REG_OPTION_NON_VOLATILE, 
                     KEY_SET_VALUE, 
                     NULL, 
                     &hKey, 
                     NULL); 
    if(a==ERROR_SUCCESS)
    {
      cout << "ura!" <<endl;
       system("PAUSE");
      
    }
    else
    {
      cout << "bat! " << a << endl;
      system("PAUSE");
    }
Благодарю за помощь!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.08.2011, 21:41     Неудается добавить в автозагрузку!
Посмотрите здесь:

C++ Не могу добавить \
Ping...неудается с функцию system поместить переменную C++
C++ Добавить комментарии
Как сделать чтобы программа при первом запуске добавлялась в автозагрузку? C++
C++ добавить указатель
C++ Как добавить программу в автозагрузку которой нужны администраторские права
C++ Как добавить программу в автозагрузку?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
villu
202 / 202 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
26.08.2011, 23:19     Неудается добавить в автозагрузку! #2
C++
1
TCHAR *sKey = (TCHAR *)_T("Software\\Microsoft\\Windows\\CurrentVersion\\Run");
либо
C++
1
wchar_t *sKey = L"Software\\Microsoft\\Windows\\CurrentVersion\\Run";
и после этого, разумеется:
C++
1
2
3
4
5
6
7
8
9
    LONG a = RegCreateKeyExW(hKey, 
                     sKey, 
                     NULL, 
                     NULL, 
                     REG_OPTION_NON_VOLATILE, 
                     KEY_SET_VALUE, 
                     NULL, 
                     &hKey, 
                     NULL);
Илларион
8 / 8 / 0
Регистрация: 05.06.2011
Сообщений: 97
26.08.2011, 23:53  [ТС]     Неудается добавить в автозагрузку! #3
Спасибо, второй вариант изменил ошибку (я правда только не понял в чем она).
Но появилась теперь ошибка 5 - ERROR_ACCESS_DENIED. Как я понимаю, недостаточно прав. Но почему, я ведь из-под админа компилирую... И как её убрать, подскажить, please
villu
202 / 202 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
26.08.2011, 23:56     Неудается добавить в автозагрузку! #4
(я правда только не понял в чем она).
В том, что во втором случае используется UNICODE строка для юникод функции.

Цитата Сообщение от Илларион Посмотреть сообщение
Но почему, я ведь из-под админа компилирую
Win7?
потому что в виндовс 7 админ на самом деле не совсем админ можно сделать "Запустить под администратором" из контекстного меню.
Илларион
8 / 8 / 0
Регистрация: 05.06.2011
Сообщений: 97
27.08.2011, 14:29  [ТС]     Неудается добавить в автозагрузку! #5
Да, спасибо огромное))

Добавлено через 14 часов 30 минут
Вот новая проблема. Пытаюсь компилировать на dev-C++ сделующий код.
C++
1
2
3
4
5
6
7
8
9
LONG a = RegCreateKeyEx(hKey, 
                     sKey, 
                     NULL, 
                     NULL, 
                     REG_OPTION_NON_VOLATILE, 
                     KEY_SET_VALUE, 
                     NULL, 
                     &hKey, 
                     NULL);
Выдает: 22 C:\Dev-Cpp\Projects\!funny\main.cpp [Warning] passing NULL used for non-pointer converting 3 of `LONG RegCreateKeyExA(HKEY__*, const CHAR*, DWORD, CHAR*, DWORD, REGSAM, _SECURITY_ATTRIBUTES*, HKEY__**, DWORD*)'
Указывает на последний параметр, который NULL. В чем тут дело? На Visual C++ всё ок...
villu
202 / 202 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
27.08.2011, 14:32     Неудается добавить в автозагрузку! #6
на 0 можно поменять, например.
Илларион
8 / 8 / 0
Регистрация: 05.06.2011
Сообщений: 97
27.08.2011, 14:33  [ТС]     Неудается добавить в автозагрузку! #7
Неа, все тоже самое...
grizlik78
Эксперт С++
 Аватар для grizlik78
1891 / 1423 / 104
Регистрация: 29.05.2011
Сообщений: 2,978
27.08.2011, 14:36     Неудается добавить в автозагрузку! #8
Илларион, речь ведь не о последнем параметре, а о третьем.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.08.2011, 14:37     Неудается добавить в автозагрузку!
Еще ссылки по теме:

Написать самый простой антивирусный сканер, который сможет найти вирус, записанный в автозагрузку C++
C++ Добавление программы в реестр (Автозагрузку) | RegSetValueEx
C++ Добавление в автозагрузку
C++ Прописывание программы в автозагрузку
Почему неудается осуществить больше 10 вводов? C++

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

Или воспользуйтесь поиском по форуму:
Илларион
8 / 8 / 0
Регистрация: 05.06.2011
Сообщений: 97
27.08.2011, 14:37  [ТС]     Неудается добавить в автозагрузку! #9
А вот это спасибо)) Ушла ошибка, когдя я поменял на 0. Сбило с мыслей то, что в редакторе он выделил последний параметр
Yandex
Объявления
27.08.2011, 14:37     Неудается добавить в автозагрузку!
Ответ Создать тему
Опции темы

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