2013-06-26 19 views
1

Я попытался создать консольную программу приложения и заставить приложение запускаться при запуске. Я нашел некоторые решения, но они используют внешние DLL-файлы (из операционной системы, в моем случае - Windows), или они относятся к Windows Forms/WPF. Я понял, что код запуска для приложения Windows Forms отличается от кода запуска Console Application. Может ли кто-нибудь мне помочь? Я действительно путают сейчас ..Как запустить консольное приложение (!) При запуске? C#

Вот код, который я нашел: (на этот адрес: How to run a C# application at Windows startup?)

RegistryKey rkApp = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true); 
rkApp.SetValue("MyAPP", Application.ExecutablePath.ToString()); 

Как я могу сделать это действие для консольного приложения, с кодом, который будет похож на этот , и без использования внешних dll?

Спасибо ..

ответ

2

У вас уже есть правильное решение. Классы Registry в платформе .NET не требуют WinForms или ссылок WPF, поэтому вы можете использовать их в консольном приложении, не засоряя свой проект ненужными ссылками.

+0

, но когда я пытаюсь использовать это в моем коде, это дает мне ошибку в той части «Application.ExecutablePath.ToString()» в вторая строка .. почему это происходит? – Aviv

+1

@Aviv, вы никогда не упоминаете об этом в своем исходном вопросе, отредактируйте свой вопрос и, пожалуйста, включите эту информацию и то, что ошибка говорит в вашем сообщении. –

+0

Попробуйте Assembly.GetEntryAssembly() вместо этого –

3

Application.ExecutablePath используется только в приложениях Windows. Для того, чтобы получить выполняющую сборку любого приложения, используйте Assembly.GetExecutingAssembly().Location:

RegistryKey rkApp = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true); 
rkApp.SetValue("MyAPP", Assembly.GetExecutingAssembly().Location);