Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка 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.
  Вот такие несложные строки кода, позволяют программистам добавлять свои программы в автозапуск smile
  После прочтения этой статьи, вы знаете как сделать автозапуск программы. 


Автор: 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);
И если  поменять  потом имя(не удалив  предварительно  ключ , то  будет  данное приложение запущено  дважды после презагруски)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)