Автозагрузка приложения без окон - C#
Формулировка задачи:
Всем привет.
Есть данный кусок кода:
Если просто запускаю этот код - то в файл пишется каждую секунду лог.
Если приложение добавлено в автозагрузку (в реестр), то программа после запуска windows ничего не пишет, т.е. даже не выполняются первые строчки кода, хотя в процессах она висит.
Суть - что нужно приложение без формы (в консольном приложении данный код работает правильно).
Как быть чтобы после запуска windows приложение работало корректно ?
Добавлено через 11 минут
Более того даже приложение на WinForms (при автозапуске) с этим кодом запускается, но не пишет лог и таймер не работает тоже. компилирую под .NET 2.0
Добавлено через 24 минуты
Следующий GUI-код также при запуске не пишет лога
Как быть если нужна запись именно в реестр?
class Program
{
static System.Timers.Timer timerSend;
static int i = 0;
private static StreamWriter log;
[STAThread]
static void Main()
{
log = new StreamWriter("log.txt", true);
log.WriteLine("run 1");
log.Close();
timerSend = new System.Timers.Timer(1000);
timerSend.Elapsed += new ElapsedEventHandler(timerSend_Elapsed);
timerSend.Start();
log = new StreamWriter("log.txt", true);
log.WriteLine("run 2");
log.Close();
while (true)
{ }
}
static void timerSend_Elapsed(object sender, ElapsedEventArgs e)
{
Console.WriteLine("hello - " + i);
log = new StreamWriter("log.txt", true);
log.WriteLine("hello - " + i);
log.Close();
i++;
}
} public Form1()
{
InitializeComponent();
MessageBox.Show("asdasdas");
log = new StreamWriter("log.txt", true);
log.WriteLine("run 1");
log.Close();
timerSend = new System.Timers.Timer(1000);
timerSend.Elapsed += new ElapsedEventHandler(timerSend_Elapsed);
timerSend.Start();
log = new StreamWriter("log.txt", true);
log.WriteLine("run 2");
log.Close();
}Решение задачи: «Автозагрузка приложения без окон»
textual
Листинг программы
string LogFileName = Path.ChangeExtension(Assembly.GetAssembly(this.GetType()).Location, "log");