访问任务计划程序下的磁盘

我正在使用任务调度器运行一些控制台应用程序。 这些应用程序执行一些后台任务,并作为C#控制台应用程序运行。

应用程序本身运行得非常好(即,其中一个应用程序在运行结束时会输出电子邮件,而我正在收到这些电子邮件),但是在正确logging日志时遇到了问题。 他们使用Log4Net和configuration显示正常,因为如果我手动运行他们正确地产生日志。

但是,当我在任务计划程序下的同一个用户帐户(由检查进程pipe理器确认)下运行这些帐户时,它们不会生成任何日志。 就好像他们正在被饿死的正确的特权(但不抛出exception,因为他们执行得很好)或任务调度程序沙盘写磁盘,永远不会让他们接触实际的磁盘。

我最初尝试写入%AppData%,但我读到任务调度程序与用户variables的问题。 所以我现在已经把path硬编码到c:\ BackOffice \ Logs,但是这并没有改变这个不幸的行为。 d:

有任何想法吗? 这是在AWS EC2上运行的Microsoft Server 2008 R2 Datacenter。

这是log4net的configuration,如果有帮助的话:

<?xml version="1.0" encoding="utf-8"?> <log4net> <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" /> </layout> </appender> <appender name="FileAppender" type="log4net.Appender.FileAppender"> <file value="c:\BackOffice\Logs\LogName_log.txt" /> <appendToFile value="true" /> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </layout> </appender> <root> <level value="DEBUG" /> <appender-ref ref="FileAppender" /> <appender-ref ref="ConsoleAppender" /> </root> </log4net> 

这听起来像我刚刚处理的UAC问题 – 我find你的问题,同时寻找答案!

在我的情况下,我不得不运行预定的询问与'最高权限运行'checkbox选中。 这与pipe理员帐户一起工作,因为使用UAC,具有较高权限的pipe理员令牌可以读取/写入其他用户的文件(在本例中是另一个pipe理员)。 我testing了一下,发现如果任务计划在拥有该文件/目录的用户的同一个用户下运行,即使没有“最高权限”标记也可以工作。

我还没有确定是否所有这些都适用于非pipe理帐户和访问,但我的假设是,由于非pipe理员帐户没有“高级权限”令牌,它只会失败。

更多的研究,它看起来像%alluserprofile%目录是你应该把“这台计算机”的数据,而不是%appdata%目录中的“每个用户”数据。 所以也许把它放在那里将解决你的问题。

最后我发现我的问题。 当前的工作目录不是app目录,所以log4net永远找不到configuration文件。 幸运的是,在任务计划程序中有一个可选字段,允许您设置任务的起始目录。