C# и автозагрузка из реестра.

Преамбула

Оказывается, несколько моих рабочих софтин тихо отвалились, пока пользователи молчали, как партизаны (обычное дело). Теперь я стал работать в Win 7, где не был вырван с корнем UAC и вся виндовая система безопасности. Мне-то хватало Comodo, а что-то действительно важное крутилось на Linux. Ну зато нашел баги. И приобрел опыт.

В чем баг

Я почему-то, если нужна была автозагрузка из реестра, пытался прописываться в HKEY_LOCAL_MACHINE (Software\Microsoft\Windows\CurrentVersion\Run), а для того, чтоб туда прописаться, нужны права администратора.
Чтоб сделать правильно, надо прописываться не в HKEY_LOCAL_MACHINE, а в HKEY_CURRENT_USER, т.е. в куст реестра, ответственный за настройки текущего пользователя, что и вообще правильно, и админских прав не надо.

Как исправил

Написал простенький класс, отвечающий за автозагрузку через Реестр. Код достаточно тривиален, исходник маленький, думаю, можно разобраться без дополнительных пояснений.

Функции класса

1. Autorun.Add() — добавляет программу в автозагрузку Реестра.
2. Autorun.Remove() — удаляет программу из автозагрузки Реестра.
3. Autorun.Check(bool FixPath) — проверяет статус, если FixPath установлен в True, то исправляет путь к приложению на новый, если приложение было ранее добавлено в автозагрузку, но местоположение экзешника изменилось.
4. Autorun.Switch () — изменяет автозапуск на противоположный (т.е., если программа в автозагрузке — удаляет, если нет — добавляет)

Ссылка на демо

На GitHub

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *