【问题标题】:Windows Server Task Scheduler needs files to be in System32 folder?Windows Server 任务计划程序需要文件位于 System32 文件夹中吗?
【发布时间】:2011-11-27 16:36:10
【问题描述】:

我制作了一个 C# 控制台应用程序,它需要 2 个配置文件才能启动。 当我从 cmd 窗口运行它时,它会很好地找到 2 个配置文件(放置在 exe 生成的目录中)。

但是,当使用 Windows 服务器任务调度程序时,我得到一个异常 - " 找不到文件 'C:\Windows\system32\field.config' "

我尝试使用 bat 文件执行任务,但出现相同的问题 - 任务调度程序尝试在 System32 目录中查找文件。

将两个配置文件放在 System32 目录中是一种解决方法,但还有其他方法吗? 谷歌搜索类似的问题,但没有任何信息。 任何帮助都非常感谢。

【问题讨论】:

  • 这有点奇怪......要获得答案,您需要在您访问这些文件的位置显示相关源代码
  • 您的批处理文件是否将目录更改为相关目录,或者您只是在调用 c:\somedir\myprog.exe ?
  • 感谢您花时间回答使用完整路径作为目前最好的解决方法..mayde Task Sheduler 可以指定工作目录..

标签: c# windows-server-2008 scheduled-tasks


【解决方案1】:

没有实际代码可看,让我做一个有根据的猜测。在您的应用程序中,您尝试使用相对于可执行文件的路径打开这些文件(例如:field.config)。当您设置计划任务时,您没有正确配置工作目录;然后应用程序以 System32 作为工作目录执行,这就是它在那里查找文件的原因。

【讨论】:

  • 确实如此..-但您不能在 TaskCheduler 中专门定义工作目录。您只需通过提供可执行位置来定义“操作”-(C:\www.Buldoz. com\Updater\SolrUpdater.Console\bin\Debug\solrupdater.exe),这应该是任务计划程序的工作目录——但它不是……它似乎是 System32,因为它在那里寻找配置文件……
  • @Nikos:真的吗?我确信必须有一种方法来指定工作目录。无论如何,您始终可以根据其模块路径重写您的应用程序以使用完整路径。
  • 我会再试一次,看看是否有办法在任务计划程序中定义工作目录 - 但是,是的,这就是我现在正在做的事情 - 使用完整路径并在 App 中定义它们。配置清楚..非常感谢您的回答..
【解决方案2】:

我知道这是旧的,但我想我会把我的发现放在这里以防有人偶然发现这个。

在属性>操作上,它似乎是操作编辑屏幕上的“开始于(可选)”字段,您可以在其中键入您希望工作目录所在的目录。

【讨论】:

  • 谢谢!无论如何,我不明白这种行为。 Windows Server 2003 的行为不同,默认情况下使用“正确”的工作目录。
  • 感谢这个简单的解决方案。节省了我的时间。
  • 如果您使用的是相对路径,那么它可能仍然无法正常工作,因此在创建路径时始终使用 Environment.CurrentDirectory。 Environment.CurrentDirectory 路径将等于“开始于(可选)”
猜你喜欢
  • 2011-04-04
  • 2020-10-14
  • 1970-01-01
  • 2010-09-22
  • 2012-06-29
  • 2014-08-14
  • 2013-04-05
  • 1970-01-01
相关资源
最近更新 更多