Оказывается, несколько моих рабочих софтин тихо отвалились, пока пользователи молчали, как партизаны (обычное дело). Теперь я стал работать в 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 ()
— изменяет автозапуск на противоположный (т.е., если программа в автозагрузке — удаляет, если нет — добавляет)