Process.Start()作为计划任务运行时执行失败
本文关键字:任务 运行时 执行 失败 计划 Start Process | 更新日期: 2023-09-27 17:49:40
我有一个用c#编写的。net控制台应用程序(myApp.exe),它运行一个外部应用程序('bob.exe')。当我手动运行myApp.exe时,控制台应用程序工作得很好。调用应用程序的c#代码是:
System.Diagnostics.ProcessStartInfo procStartInfo =
new System.Diagnostics.ProcessStartInfo("C:''bob.exe");
procStartInfo.RedirectStandardOutput = true;
procStartInfo.UseShellExecute = false;
// Do not create the black window.
procStartInfo.CreateNoWindow = true;
// Create the process and assign its ProcessStartInfo and start it
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo = procStartInfo;
proc.Start();
在Windows Server 2003中,我创建了一个定期执行"myApp.exe"的计划任务。它被设置为即使用户未登录也执行。计划任务工作并调用'bob.exe'(我可以通过查看'bob.exe'的输出文件来验证这一点)
我们随后升级到Windows Server 2012。我在Windows Server 2012中创建了一个计划任务,将其设置为即使用户未登录也执行,并在Windows Server 2003中配置它。
我将Action设置为调用'C:'myApp.exe',类似于我在Windows Server 2003中设置它的方式
当计划任务执行并且我登录时,'bob.exe'应用程序从'myApp.exe'执行。但是,当我没有登录并且执行计划任务时,'myApp.exe'被执行,但'bob.exe'从未执行(我可以通过看到'bob.exe'没有输出文件来验证这一点)。计划任务没有报告错误,最后一次运行结果显示"操作成功完成"。(0 x0)"。
我在这里找到了一个类似的帖子,但我无法解决我的情况。我错过了什么?
我有一个类似的问题,我的应用程序调用7za.exe存档数据库备份。当我手动运行我的应用程序时,它工作得很好,但当我通过任务调度程序调度我的应用程序时,7z例程不会启动,也不会给我的应用程序一个冗长的错误。我发现,将我运行应用程序的目录添加到任务调度程序的Start in(可选):框中可以纠正我的问题。
程序/脚本: "C:'Program Files (x86)'CustApp'CustApp.exe"
Start in (optional) C:'Program Files (x86)'CustApp'
注意不要在目录的"Start in (optional)"设置上使用双引号,否则会出错。
我在运行批处理文件时遇到了类似的问题(在WS2008上),问题是由于在批处理文件和可执行文件设置的文件夹上执行计划任务的用户所获得的权限。我不确定WS 2012的安全性是否不同,但如果我是您,我会尝试调试应用程序(如果您有代码)检查权限。HTH