Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
2 / 2 / 0
Регистрация: 05.11.2016
Сообщений: 22

Ошибка при добавлении файла в авторан

20.03.2019, 13:40. Показов 1285. Ответов 5

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Столкнулся я с проблемой: хочу добавить файл в автозагрузку, но не получается.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
CString FilePath = CString(L"D:\\MyExe.exe");
void SetAutoRun() {
    HKEY hKey;
    RegOpenKeyEx(HKEY_LOCAL_MACHINE,
        L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",
        0,
        KEY_ALL_ACCESS,
        &hKey); //Открыли ключ 
    const size_t newsizew = (FilePath.GetLength() + 1) * 2;
    char *pbBuffer = new char[newsizew];
    size_t convertedCharsw = 0;
    wcstombs_s(&convertedCharsw, pbBuffer, newsizew, FilePath, _TRUNCATE);
    // char *path = "";
 //   WideCharToMultiByte(CP_ACP, WC_NO_BEST_FIT_CHARS, FilePath.GetString(), FilePath.GetLength(), path, 0, 0, 0);
  //  BYTE *pbBuffer = (BYTE*)path;
        
    int r = RegSetValueEx(hKey, L"ClipboardDriver", 0, REG_SZ, (BYTE *)pbBuffer,
        FilePath.GetLength() * sizeof(TCHAR) + 1);
    RegCloseKey(hKey); //Закрыли
}
Путем отладки я вычислил, что после выполнения строчек
C++
1
2
3
4
5
 RegOpenKeyEx(HKEY_LOCAL_MACHINE,
        L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",
        0,
        KEY_ALL_ACCESS,
        &hKey); //Открыли ключ
hKey ничего не содержит. То есть содержит вот это 0x0000000 <NULL>

Не могли бы вы мне подсказать, где тут ошибка?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.03.2019, 13:40
Ответы с готовыми решениями:

Ошибка при добавлении из файла в DataTable
class Program { static void Main(string args) { DataTable dt = new DataTable(); ...

Ошибка при добавлении файла в ресурсы
Здравствуйте. Подскажите пожалуйста, что я делаю неправильно? Ошибки указаны в комментариях uses System.resources, graphABC,...

Ошибка 500 при добавлении файла
Здравствуйте. Есть код добавления изображения на сервер. Вот: &lt;?php ...

5
Эксперт CЭксперт С++
 Аватар для liv
5120 / 4574 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
20.03.2019, 15:51
XaKep0, попробуй воспользоваться RegCreateKey, а не RegOpenKeyEx
0
33 / 26 / 7
Регистрация: 06.03.2019
Сообщений: 76
20.03.2019, 16:14
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
CString FilePath = CString(L"D:\\MyExe.exe");
void SetAutoRun() {
    HKEY hKey;
    RegOpenKeyEx(HKEY_LOCAL_MACHINE,
    L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",
    0,
    KEY_ALL_ACCESS,
    &hKey); //Открыли ключ 
    size_t const Size=(FilePath.GetLength()+1) * sizeof(wchar_t);
    RegSetValueEx(hKey, L"ClipboardDriver", 0, REG_SZ,
        (BYTE *)FilePath.operator LPCTSTR(), Size);
    RegCloseKey(hKey); //Закрыли
}
0
2 / 2 / 0
Регистрация: 05.11.2016
Сообщений: 22
21.03.2019, 08:31  [ТС]
ahtak прочитай тему.
Цитата Сообщение от liv Посмотреть сообщение
XaKep0, попробуй воспользоваться RegCreateKey, а не RegOpenKeyEx
Тоже не работает. Не уверен, что сделал правильно.
C++
1
 RegCreateKeyEx(hKey, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", 0, NULL, REG_OPTION_CREATE_LINK, KEY_ALL_ACCESS, 0, &hKey, (LPDWORD)REG_CREATED_NEW_KEY);
0
Эксперт CЭксперт С++
 Аватар для liv
5120 / 4574 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
21.03.2019, 14:55
Лучший ответ Сообщение было отмечено XaKep0 как решение

Решение

Попробуйте так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int SetAutoRun(LPCTSTR lpKey, LPCTSTR lpSubKey, LPCTSTR pValue, int iCount, DWORD dwType)
{
    HKEY    hKey;
    int     iRet;
 
    if (RegCreateKey(HKEY_LOCAL_MACHINE, lpKey, &hKey))
        return -1;
 
    iRet = 0;
    if (RegSetValueEx(hKey, lpSubKey, 0, dwType, (const PBYTE)pValue, iCount*2))
        iRet = -1;
 
    if (RegCloseKey(hKey))
        iRet = -1;
 
    return iRet;
} // end of SetAutoRun()
C++
1
2
    TCHAR *filePath = (TCHAR*)L"D:\\MyExe.exe";
    SetAutoRun(L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", L"ClipboardDriver", filePath, lstrlen(filePath) + 1, REG_SZ);
Тут есть момент:
Мой опыт показывает, что без запуска под админскими правами система не дает писать на 64-битной системе в раздел HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node, куда попадает и Run для запуска 32-битных приложений. По этой причине я перешел на запись в ветку HKEY_CURENT_USER. Там все работает. Если приложение 64-битное, то, вероятно, запишется в обычное место без проблем. Не пробовал.

Добавлено через 1 час 54 минуты
HKEY_CURRENT_USER, разумеется.
1
2 / 2 / 0
Регистрация: 05.11.2016
Сообщений: 22
22.03.2019, 17:13  [ТС]
Действительно заработало.
Сначала при отладке после вызова RegSetValueEx возвращало -1
Поменяв в RegCreateKey HKEY_LOCAL_MACHINE на HKEY_CURRENT_USER всё заработало!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.03.2019, 17:13
Помогаю со студенческими работами здесь

Ошибка при добавлении .apk файла в google play: запретите отладку
когда загружаю в guugle play .apk-файл, то гугл пишет ошибку: &quot;Прежде чем опубликовать APK-файл в Google Play, запретите его...

Ошибка при добавлении файла в очередь загрузки (android.app.DownloadManager)
Пытаюсь загрузить файл с сервера, таким способом: public void download(Context context, String url) { String...

Ошибка "LNK1169: one or more multiply defined symbols found" при добавлении файла в проект
Здравствуйте, у меня такая проблема в Microsoft Visual Studio 2013/2012: создаю проект, создаю C++ файл (ctrl+shift+a, кстати, подскажите,...

Ошибка при добавлении данных в БД при нажатии на кнопку
Пишу приложение для БД access на C#. Существует форма &quot;добавить&quot; на которой расположены text.box, checkbox и combobox , необходимо чтобы...

Ошибка при добавлении
string SQLString = &quot;&quot;; SQLString = &quot;INSERT INTO computers(ID, Processor, RAM, HDD, Videocard, Sound, Cost, Type) VALUES('&quot; +...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru