gpt4 book ai didi

c# - 为什么 C# 应用程序在从 Windows 任务计划程序运行时不创建文件?

转载 作者:可可西里 更新时间:2023-11-01 10:53:59 26 4
gpt4 key购买 nike

我有一个 C# 桌面应用程序,它应该在运行时创建并写入一个文本文件。这个应用程序假设每天早上 9:00 运行,所以我在 Windows 任务计划程序中创建了一个任务来运行这个程序。从 Windows 任务计划程序运行时,应用程序工作正常,除了创建任何文本文件。但是,如果我关闭应用程序并通过双击重新运行,那么它会相应地创建文本文件。

这是我的文本文件编写代码:

 public void process_log(string str, string logtype)
{

try
{
string myFile = null;
string myDate = DateTime.Now.Date.ToString("yyyyMMdd");
string myDir = null;
switch (logtype)
{
case "process":
myDir = "logs\\process\\";
break;
case "err":
myDir = "logs\\err\\";
break;
case "URLSTR":
myDir = "logs\\URLSTR\\";
break;
case "MOMT":
myDir = "logs\\MOMT\\";
break;
default:
myDir = "logs\\";
break;
}

myFile = myDir + myDate + ".txt";


StreamWriter sw = default(StreamWriter);
DirectoryInfo dir = new DirectoryInfo(myDir);
if (dir.Exists == false)
{
Directory.CreateDirectory(myDir);
}

if (File.Exists(myFile))
{
sw = File.AppendText(myFile);
}
else
{
sw = File.CreateText(myFile);
}
sw.WriteLine(str);
sw.Close();



}
catch (Exception ex)
{
str = DateTime.Now.ToString("HH:mm:ss") + ex.Message;
process_log(str, "err");
str = ex.StackTrace;
process_log(str, "err");


}

}

这个问题变得非常严重,因为我们找不到任何日常日志文件。请帮助解决这个问题,谢谢。

最佳答案

我怀疑这是权限问题。当您通过双击运行应用程序时,它会在您的用户上下文中运行。当 Windows 调度程序运行时,它在 Windows 调度程序的任务定义页面中指定的上下文下运行,默认为本地系统(我认为)。您可以通过更改 Windows 计划程序任务定义页面中的执行上下文来检查这一点,并以您自己的帐户运行它 - 然后它应该可以工作。

关于c# - 为什么 C# 应用程序在从 Windows 任务计划程序运行时不创建文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24732411/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com