File.AppendText尝试写入错误的位置

时间:2015-04-27 13:14:00

标签: c# file console streamwriter

我有一个C#控制台应用程序,它作为Windows任务计划程序中的计划任务运行。此控制台应用程序写入日志文件,在调试模式下运行时,会在应用程序文件夹本身内创建并写入文件。但是,当它在任务调度程序中运行时,它会抛出一个错误,说访问被拒绝,因为它正在尝试写入同一个日志文件,但由于某种原因,它试图在windows \ system32文件夹中写入它。为什么会这样?我该如何纠正这个?

以下是将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();
        }

1 个答案:

答案 0 :(得分:0)

这种情况正在发生,因为您没有为日志文件指定目录,所以它假定父可执行文件所在的目录,当您正在调试时,它是您的调试输出文件夹,当您从中运行它时任务调度程序,是“c:\ windows \ system32”文件夹。

您可以像这样提供目录的路径:

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