winforms 以编程方式在C#中创建的Windows任务计划程序不会自动运行

bqucvtff  于 2022-11-25  发布在  C#
关注(0)|答案(3)|浏览(404)

我用c#编程创建了windows任务调度程序。任务创建成功,并被调度为正确运行。在调度时间,它说任务正在运行,但没有任何结果,并更新了下一个调度时间。
但上次运行时间和上次运行结果不会更新。

上次运行结果为:工作尚未执行。(0x 41303)

但是,当从任务计划程序手动运行时,它会成功执行,但不会自动执行。
下面是我用来创建任务的代码

var ts = new TaskService();
var td = ts.NewTask();
td.RegistrationInfo.Author = "My company";
td.RegistrationInfo.Description = "Runs test application";
var trigger = new WeeklyTrigger { StartBoundary = startDate, DaysOfWeek = daysOfWeek, Enabled = enabled };
trigger.Repetition.Interval = TimeSpan.FromSeconds(((minutes == 0) ? 60 : minutes) * 60);
td.Triggers.Add(trigger);
var action = new ExecAction(Assembly.GetExecutingAssembly().Location, null, null);
if (filePath != string.Empty && File.Exists(filePath))
{
    action = new ExecAction(filePath);
}
action.Arguments = "AutoRun";
td.Actions.Add(action);
ts.RootFolder.RegisterTaskDefinition(TaskName, td);

任何帮助都将不胜感激!

lrpiutwd

lrpiutwd1#

首先检查执行权限。然后检查任务管理器,如果进程看起来“正在运行”,但实际上它正在运行。如果是,请尝试使用一些try-catch块,并创建事件日志作为异常。
我认为当你从任务调度器手动运行时,它是由属于任务调度器的用户(可能是管理员)执行的。但是在预定的时间,应用程序试图以没有足够权限在你的代码中做一些事情的用户的身份执行。

更新

1.将Start in(可选)值设置为目标文件位置。如果没有它,任务调度程序将在system32文件夹中运行,但就像我之前所说的,目标应用程序将没有特权在system32中运行。
1.尝试将控制台应用程序的版本更改为32位。
例如,右键单击后藤-〉属性-〉构建-〉平台目标= x86。

pxyaymoc

pxyaymoc2#

事实证明,要在调度程序中运行任何任务,笔记本电脑充电器必须插上电源,否则调度程序不会执行任务。
windows server或桌面系统则不是这样。
不确定这种行为,但这是我想通了。

klh5stk1

klh5stk13#

对我来说,问题是可执行文件崩溃与“应用程序错误”。你不能看到任何错误的任务调度程序。它只会显示最后运行的结果为“该任务尚未运行。(0x 41303)”
要获取错误信息,请检查事件查看器
事件查看器-〉Windows日志-〉应用程序

相关问题