我有一个批处理脚本准备一些文件,执行程序( .exe ),然后删除所述的文件。
这个任务应该每小时运行一次,所以我试图用Scheduled Tasks来configuration它。 问题是前面提到的程序在从任务调用时不能正常运行(既不是通过.bat脚本,也不是直接调用.exe ),但是在日志中没有任何警告或错误消息。
该任务被configuration为以具有正确设置的所有特权的Windows服务帐户运行。 当使用这个账户通过RDPlogin时,我可以直接执行.bat和.exe而没有问题,但是这个任务似乎什么都不做。 这很容易被观察到,因为程序总是修改一个文件, 修改的时间戳不会通过任务改变。
在计划的任务日志中,我得到启动进程,退出等任务的信息消息。然而,“结果代码”是111 (试图Google没有运气,我得到的唯一联系是“文件名也是长“,这是完全不相干的AFAIK)。 在应用程序日志中,我一无所获。
该程序是一个古老的怪物,产生一些启animation面(这实际上是一个普通的窗口),即使不需要graphics用户界面,因为它不需要交互,并在操作后自行closures。 窗口显示约2秒钟。
我怀疑这个GUI的需求与任务失败有关,但我不确定。 当我通过RDP(通过RDP)运行任务的用户login时,启动计划任务时不会显示任何窗口。
我已经构build了一个非常小的C#可执行文件,用于启动不带主窗口的程序(使用ProcessStartInfo.WindowStyle = ProcessWindowStyle.Hidden )。 即使这样,计划的任务仍然无法正确启动程序,但返回代码现在为0 。
当我将任务configuration为说“运行用户是否已login”,并且未选中“ run with highest privileges ”选项时,错误值为2147943859 。
我能做些什么来排除故障?
OS = Windows Server 2008 R2 SP1
如果需要更多信息,请在评论中告诉我。
我相信您的问题与运行任务所用帐户的权限或帐户的上下文在尝试运行任务时存在关联 。
可能您的.EXE必须在计算机上的Console会话(又称会话0)中运行。 为了testing这个:
QWINSTA ,观察SESSIONNAME列,并确认>指示符旁边的console ,换句话说它应该显示为>console ) 如果任务正确运行,请尝试使用/IT参数使用SCHTASKS.EXE计划任务。 否则,您可能别无select,只能将计算机configuration为自动以您的服务用户帐户login并将该任务作为启动程序运行。
另外,正如我已经build议的那样,请检查以下内容以确认用于运行任务的帐户已被正确授权:
Computer Configuration/Windows Settings/Security Settings/Local Policies/User Rights Assignments中的本地组策略中find) Security > Advanced的文件/文件夹属性中的“ Effective Permissions选项卡进行确认 添加一些日志到你的batch file。 每执行一行之后,让它将一些输出写入日志文件,以便知道卡在哪里。 例如:
@echo off echo Line 1 >> "C:\MyLog.txt" "C:\My Folder\myOldProgram.exe" echo Line 2 >> "C:\MyLog.txt" DEL somefile.dat echo Line 3 >> "C:\MyLog.txt"
尝试使用START运行.EXE ,例如START "myTitle" "C:\full\path\to\my.EXE"
也许这有助于你?
我们有一个类似的问题,你唯一的解决scheme是,我们用自动login在服务器上做了一个特殊的帐户。 所以如果任务运行在已经有用户的情况下,我们的.exe运行良好。
我知道这不是一个很好的解决scheme,但对我们来说,这是唯一的工作。 我不知道这是否适合你…(但是,这个工作,你必须检查用户是否真的login了…)
运行我们客户服务器的公司的人说,GUI程序不会以任何方式通过计划的任务运行。
他们使用同样具有任务调度function的监控系统。 他们已经完成了它,它似乎工作。
对不起,我没有机会在这里评估更多的build议,但谢谢你试图帮助。 我希望将来可以帮助别人,我相信这肯定会。
我正在回复一个旧post,以防别人帮忙。 我遇到过同样的问题。 事件日志表示程序正常完成,但即使第一行代码也不会写入日志中。 它最终成为Task Scheduler中的“Start In”选项。 我想到当我在当前目录下时,程序从命令行运行正常。 清单文件和其他依赖项在同一个目录中。 因此,如果您告诉计划的作业在EXE的同一个目录中启动,您可能会得到满意的结果。 这是我的解决scheme。
我试图在Windows 2008 R2服务器上使用任务计划程序启动旧的VB6程序。 应用程序将从exe中运行,通过batch file或单击快捷方式运行,但不会从任务计划程序运行。 我发现当存储在C:\ program files(x86)目录中的应用程序文件夹中的应用程序的configuration文件被复制到c:\ programdata上的应用程序文件夹时。 调度程序工作。 看起来cmd.exe将configuration从不同的位置应用到任务调度程序使用的位置。 如果您的应用程序有configuration文件,您可以尝试将它们移动到c:\ programdata \ application文件夹。
您是否在脚本或程序中引用任何映射的networking驱动器 ? 我有一个类似的问题,我的计划任务不会运行,我不明白为什么。 改变path到UNCpath为我解决了它。
将T:\Apps\MyProgram.exe更改为\\MyServer\MyShare\Apps\MyProgram.exe
当我将任务configuration为说“运行用户是否已login”,并且未选中“最高权限运行”选项时,错误值为2147943859。
2147943859转换为hex是800705b3,快速前往谷歌告诉我的意思是“无法在计算机上启动安装程序。此操作需要一个交互式窗口站。
现在,可能有一些方法可以使它不需要使用PSEXEC(从Sysinternals)交互式运行,但是因为我已经知道如何通过PSEXEC来完成这个工作。
PSExec: http ://technet.microsoft.com/en-us/sysinternals/bb897553.aspx
因此,改变你的行动,用psexec.exe -i(和-h,如果你需要提升的话)预先把所有的东西都写出来,它应该可以工作。
我已经在Windows Server 2008 R2 SP1上尝试了以下操作:
c:\windows\system32\cmd.exe
然后参数:
/c psexec.exe -h -i notepad.exe
当我手动运行任务(因为我没有它的时间表),我得到一个提升记事本运行在我当前的会话。
也许这个问题的答案会帮助别人阅读这个线程?
https://stackoverflow.com/questions/32589381/
摘要: Windows 2012计划任务对于任务设置为运行的帐户,看不到正确的环境variables(包括PATH 。
在研究上述内容之前,我读了相当长的一段时间。 (这是我自己的问题,导致与OP的问题一样。)
一旦你(终于!)知道这一点,这是很容易testing它(按照stackoverflow的答案),看到它发生,并解决它….