![]() |
|
Модераторы: gambit, Partizan |
![]()
|
|
| pauker |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 24.3.2008 Репутация: нет Всего: нет |
Возможно ли сделать программно, чтобы при первом запуске приложение прписывалось в автозапуск - и потом запускалось при каждом входе в винду или это нужно делать при создании инсталлятора?
|
|||
|
||||
| Freak_FB |
|
|||
![]() Ктулхувед ![]() ![]() Профиль Группа: Участник Сообщений: 296 Регистрация: 13.10.2006 Репутация: 2 Всего: 4 |
Можно и в инсталяторе.
А можно и самому проверить ключ в реестре, который за автозагрузку отвечает: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run. |
|||
|
||||
| Fox21 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 6.8.2007 Репутация: нет Всего: нет |
Автозапуск программы в 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 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 24.3.2008 Репутация: нет Всего: нет |
Вроде верно все делаю:
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 |
|
|||
![]() Ктулхувед ![]() ![]() Профиль Группа: Участник Сообщений: 296 Регистрация: 13.10.2006 Репутация: 2 Всего: 4 |
Я конечно могу ошибаться (даже ересью попахивает), но может имеет смысл назвать ключ как нибудь иначе, а не start?
|
|||
|
||||
| Fox21 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 6.8.2007 Репутация: нет Всего: нет |
Microsoft.Win32.RegistryKey myKey =
Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run\", true); myKey.SetValue("Любое_имя", Application.ExecutablePath); И если поменять потом имя(не удалив предварительно ключ , то будет данное приложение запущено дважды после презагруски) Это сообщение отредактировал(а) Fox21 - 24.4.2008, 08:52 |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Разработка Windows Forms | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |