Автозагрузка приложения без окон - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет. Есть данный кусок кода:
    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++;
        }

    }
Если просто запускаю этот код - то в файл пишется каждую секунду лог. Если приложение добавлено в автозагрузку (в реестр), то программа после запуска windows ничего не пишет, т.е. даже не выполняются первые строчки кода, хотя в процессах она висит. Суть - что нужно приложение без формы (в консольном приложении данный код работает правильно). Как быть чтобы после запуска windows приложение работало корректно ? Добавлено через 11 минут Более того даже приложение на WinForms (при автозапуске) с этим кодом запускается, но не пишет лог и таймер не работает тоже. компилирую под .NET 2.0 Добавлено через 24 минуты Следующий GUI-код также при запуске не пишет лога
        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");

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.1 из 5
Похожие ответы