Добавить в автозагрузку
При написании некоторых программ, иногда требуется добавить в них функционал для добавления приложения в автозапуск системы. Пользователю будет намного удобнее и проще поставить галочку в настройках программы, вместо того, чтобы самому запускать редактор реестра и прописывать необходимые параметры.
Немного теории
Я надеюсь, что все знают как добавить вручную приложение в автозапуск через редактор реестра. Перед тем как писать код, нужно четко представлять, как это делается вручную.
Итак, запускаем стандартное приложение ОС для работы с реестром. Это должны знать все, но все же чтобы это смог сделать каждый кратко опишу. Либо C:\Windows\regedit.exe, либо Пуск -> Выполнить, написать в поле regedit, нажать ОК.
Открылся редактор реестра. Переходим по ветке HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
Раздел Run содержит строковые параметры которые содержат пути к запускаемым приложениям. Т.е. если создать строковый параметр а в качестве его значения написать полный путь до программы, то при запуске ОС это приложение автоматически запустится.
Практика
Итак, все то что я описал выше, нужно будет реализовать программно.
Код предельно прост. Опишем константу, в которой будет имя создаваемого параметра в разделе Run
const string name = "MyTestApplication";
Далее нужно добавить пространство имен. В нем содержатся класс RegistryKey для работы с реестром.
using Microsoft.Win32;
Теперь напишем функцию, которая будет получать параметр типа bool. Если передадим True то приложение добавится в автозагрузку, иначе удалится.
public bool SetAutorunValue(bool autorun) { string ExePath = System.Windows.Forms.Application.ExecutablePath; RegistryKey reg; reg = Registry.CurrentUser.CreateSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run\\"); try { if (autorun) reg.SetValue(name, ExePath); else reg.DeleteValue(name); reg.Close(); } catch { return false; } return true; }
Теперь о том как это работает. Сначала в переменную ExePath получаем путь до исполняемого файла приложения. Затем создаем класс RegistryKey и переходим к разделу Run. Дальше производим анализ переданного в функцию параметра autorun. Если true, то нужно будет создать параметр с именем name и значением ExePath. Тем самым при запуске Windows, приложение будет запускаться. Если autorun = false, то нужно будет просто удалить параметр с именем name. После этого нужно будет вызвать метод Close(), для того чтобы закрыть раздел и записать его на диск.
Функция возвращает True в случае успешного добавления программы в автозагрузку и False в случае ошибки.
Осталось только вызвать функцию SetAutorunValue(). Например, выложите 2 кнопки на форму. При нажатии на одну выполните код
SetAutorunValue(true);
При нажатии на другую
SetAutorunValue(false);
Таким образом, одна кнопка будет добавлять в автозагрузку, другая убирать из автозагрузки программу.