我有一个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();
}
答案 0 :(得分:0)
这种情况正在发生,因为您没有为日志文件指定目录,所以它假定父可执行文件所在的目录,当您正在调试时,它是您的调试输出文件夹,当您从中运行它时任务调度程序,是“c:\ windows \ system32”文件夹。
您可以像这样提供目录的路径:
File.AppendText(@"c:\MyLogFiles\gapi_gen_log.txt")