2015-04-27 4 views
0

У меня есть консольное приложение C#, которое выполняется в качестве запланированной задачи в планировщике задач Windows. Это консольное приложение записывает в файл журнала, который при запуске в режиме отладки создает и записывает в файл в самой папке приложения. Однако, когда он запускается в планировщике задач, он выдает сообщение об отказе в доступе, поскольку он пытается записать в тот же файл журнала, но по какой-то причине он пытается записать его в папку windows \ system32. Почему это происходит? И как я исправлю это?File.AppendText пытается записать неправильное расположение

Вот фрагмент кода, который присваивает StreamWriter в файл журнала:

static void Main(string[] args) 
{ 
    using (_swrtr = File.AppendText("gapi_gen_log.txt")) 
    { 
     _swrtr.Write("\r\n"); 
     _swrtr.Write("\r\nGOOGLE CALENDAR:"); 
     _swrtr.Write("\r\n\tDate Time - " + DateTime.Now.ToLongDateString() + " " + DateTime.Now.ToLongTimeString()); 
     start(); 
    } 
} 

Я тоже попробовал, но это не сработало:

 string dir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); 

     using (_swrtr = File.AppendText(dir + "gapi_gen_log.txt")) 
     { 
      _swrtr.Write("\r\n"); 
      _swrtr.Write("\r\nGOOGLE CALENDAR:"); 
      _swrtr.Write("\r\n\tDate Time - " + DateTime.Now.ToLongDateString() + " " + DateTime.Now.ToLongTimeString()); 
      start(); 
     } 
+2

Поскольку он работает с планировщиком задач Windows, и вы указываете относительный путь. –

+0

Вопрос в том, какой целевой путь вы ожидаете вообще? Используйте абсолютный путь к каталогу, например 'D: \ Google-Calendar \ Logs \ gapi_gen_log.txt'. –

+0

И ... что такое 'start()' do ... Утилизация блокировки в файле – Nico

ответ

0

Это происходит потому, что вы не указываете каталог для вашего файла журнала, поэтому он предполагает каталог, в котором находится родительский исполняемый файл, который при отладке является вашей папкой вывода отладки и когда вы запускаете ее из планировщика задач, является «c: \ windows \ system32 ".

Вы можете указать путь к каталогу, как это:

File.AppendText(@"c:\MyLogFiles\gapi_gen_log.txt") 
+0

Я закончил кодирование, чтобы создать каталог под C: везде, где это приложение будет размещено, и напишите там файл. Спасибо, Рорип, и все остальные. – mattgcon

Смежные вопросы