| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Разработка Windows Forms > Автозапуск |
| Автор: pauker 24.4.2008, 04:29 |
| Возможно ли сделать программно, чтобы при первом запуске приложение прписывалось в автозапуск - и потом запускалось при каждом входе в винду или это нужно делать при создании инсталлятора? |
| Автор: Freak_FB 24.4.2008, 06:28 |
| Можно и в инсталяторе. А можно и самому проверить ключ в реестре, который за автозагрузку отвечает: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run. |
| Автор: Fox21 24.4.2008, 06:45 |
| Автозапуск программы в C# В этой статье мы напишем программу, которая будет добавлять себя в автозапуск Windows, с помощью реестра. Для этого нам понадобятся минимальные умения работы с реестром в C# и утилита regedit (Пуск->Выполнить->regedit), которая позволяет просматривать древовидную структуру реестра Windows. Чтобы программа запускалась при загрузке Windows, необходимо создать ключ реестра в ветке реестра "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\" названием ключа будет имя нашей программы, а значением - путь к исполняемому файлу программы. В C# за работу с реестром отвечает класс Microsoft.Win32.Registry, а за работу с ключами - Microsoft.Win32.RegistryKey. Перед тем как писать код, давайте создадим новый проект и положим на него 2 кнопки "Добавить" (будет создавать ключ в реестре) и "Удалить" (удаляет ключ). В обработчике для кнопки "Добавить" пишем: Microsoft.Win32.RegistryKey myKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run\", true); myKey.SetValue("MyProgram", Application.ExecutablePath); Теперь нажимаем кнопку "Добавить", запускаем regedit, добираемся до ветки Run и проверяем - если ключ создан, то можем перезагружать компьютер и наша программа запустится при загрузке Windows. Следует отметить что в качестве параметров функции SetValue первым является название ключа. А вот второй параметр - это путь к исполняемому файлу нашей программы. Часто возникает вопрос "Откуда запущена программа?", ответ довольно прост: Application.ExecutablePath - возвращает путь и имя исполняемого файла. Application.StartupPath - возвращает путь к исполняемому файлу. Вот в качестве второго параметра мы и передаем ExecutablePath, который сохраняет путь и имя нашей программы в реестре. Для удаления ключа, в обработчике нажатия кнопки, пишем такой несложный код: Microsoft.Win32.RegistryKey myKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run\", true); myKey.DeleteValue("MyProgram"); Код достаточно прост. Стоит отметить что мы указываем наименование ключа, который нужно удалить из текущей ветки реестра. Опять-таки запускаем regedit и проверяем - ключ удалился. Для того чтобы обновить список ключей в regedit нажимаем F5. Вот такие несложные строки кода, позволяют программистам добавлять свои программы в автозапуск После прочтения этой статьи, вы знаете как сделать автозапуск программы. Автор: DeVoid Сайт: http://devoid.com.ua/ Статья написана: 04 ноября 2007 |
| Автор: pauker 24.4.2008, 07:15 |
| Вроде верно все делаю: Microsoft.Win32.RegistryKey myKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run\", true); myKey.SetValue("Start", @"С:Program Files\project\start.exe"); И в реестре встает на место, но при перезагрухке start.exe не работает!!! ??? |
| Автор: Freak_FB 24.4.2008, 07:26 |
| Я конечно могу ошибаться (даже ересью попахивает), но может имеет смысл назвать ключ как нибудь иначе, а не start? |
| Автор: Fox21 24.4.2008, 08:49 |
| Microsoft.Win32.RegistryKey myKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run\", true); myKey.SetValue("Любое_имя", Application.ExecutablePath); И если поменять потом имя(не удалив предварительно ключ , то будет данное приложение запущено дважды после презагруски) |