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

File.AppendText attempting to write to wrong location

我有一个 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();
        }

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

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

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