Я разрабатываю приложение на С++ с опцией «автозапуск». Когда пользователь устанавливает этот параметр, программа должна изменить что-то в Windows, чтобы Windows запускала ее при следующей загрузке Windows и входе пользователя в систему. Также, когда пользователь отключил эту опцию, программа должна вернуть все обратно.
Мне не нужно запускать приложение как службу, поэтому достаточно запускать его под учетной записью определенного пользователя после входа пользователя в систему. Итак, как лучше всего заставить Windows запускать мое приложение. при следующей загрузке и входе пользователя? Я погуглил совет по использованию папки автозагрузки. Это самый приятный и безобидный способ?
Если да, то у меня 2 вопроса:
- Как определить папку автозагрузки. Меня не устраивает вывод SHGetSpecialFolderLocation(). Кажется, он возвращает мой каталог «HOME» при тестировании платформы WinXP (C:\Documents and settings\%username%).
- Как создать файл .lnk с помощью С++? Я думаю, что копирование всего файла .exe было бы плохой идеей.
На самом деле моя программа кроссплатформенная, но опция "автозапуск" будет только для Windows.
Обновить
Попробовал SHGetSpecialFolderLocation и получил хорошее значение в Windows7: "C:\Users\Pavel\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup" ПРИМЕЧАНИЕ. Если вы используете MinGW, вы должны определить _WIN32_IE на 0x0400, прежде чем включать ShlObj .час.
Какое лучшее решение (с точки зрения хорошего программирования) между использованием реестра (HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run) и папкой автозагрузки?