【问题标题】:Writing a scheduled task (ConsoleApp) to write textfiles编写计划任务(控制台应用程序)以写入文本文件
【发布时间】:2011-12-14 14:50:54
【问题描述】:

我需要编写一个将文本写入文本文件的任务。这不应该太复杂是我首先想到的,但我很早就在某个地方犯了错误。该任务稍后应该以没有本地 Windows 帐户的用户身份运行,也许这也可能是一个问题,但我更早卡住了。我使用我(本地管理员,域用户)在 windows 任务计划程序中实现和运行任务,操作是运行 .exe,即使未登录也应运行任务。

exe中的代码如下所示

StreamWriter sw = null; 尝试 { sw = File.CreateText(@"C:\temp\test.txt"); sw.WriteLine("某事某事"); } 最后 { sw.Dispose(); }

整个域都可以访问(temp-)文件夹,包括我和稍后运行任务的用户。

任务以错误代码 0xc0000005 结束,并且没有写入文本文件。我究竟做错了什么?没有文本文件!

提前致谢!

PS:任务背后的想法是让它以有权访问网络驱动器的用户身份运行,以便PC上的人可以访问存储在网络驱动器中的数据,就像连接到网络驱动器一样是一种痛苦。

【问题讨论】:

  • 您应该始终处理,而不仅仅是异常处理。
  • 这也可能会吞噬任何可能发生的异常。
  • 似乎是什么问题?你实际上并没有说问题是什么。您遇到了哪些错误/异常?
  • System.Diagnostics.Trace.Listeners.Add(new System.Diagnostics.TextWriterTraceListener("C:\\temp\\test.txt")); System.Diagnostics.Trace.AutoFlush = true; System.Diagnostics.Trace.WriteLine("Something Something"); 似乎可以正常工作。为什么?
  • @daniel:不是复制粘贴而是写在这里,实际代码中的dispose在finally块中。 @oded:编辑错误

标签: c# .net scheduled-tasks


【解决方案1】:

错误代码 5 表示“拒绝访问”。运行计划任务的用户是否有权写入 C:\TEMP?

【讨论】:

  • 谢谢,这就是问题所在。但我仍然遇到(这是一个词吗?)问题,因为用户不是本地用户,我不想共享文件夹......但它是正确的方向。
【解决方案2】:

始终使用:

try {
    using (StreamWriter sw = new StreamWriter(@"C:\test\test.txt", false)) {
        sw.WriteLine("Write something");
    }
}
catch (Exception e ) {
    DoSomeThing(e);
}

【讨论】:

  • 我猜写使用或尝试最终不会影响二进制文件。但无论如何谢谢;-) 我知道这是一种“推荐的方法”
猜你喜欢
  • 2016-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-25
  • 2012-05-15
  • 2013-01-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多