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

Windows task scheduler created programmatically in C# not running automatically

我已经在 C# 中以编程方式创建了 windows 任务调度程序。任务已成功创建并正确安排到 运行。在预定的时间,它说任务是 运行ning 但没有任何结果,并且更新了下一个预定时间。

但是最后 运行 次和最后 运行 结果没有更新。

最后运行结果是:任务还没有运行.(0x41303)

但是当 运行 从任务计划程序手动执行时,它会成功执行但不会自动执行。

下面是我用来创建任务的代码

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);

如有任何帮助,我们将不胜感激!

先检查执行权限。 然后检查任务管理器,如果进程看起来 'running' 时真的 运行ning。如果是,请尝试使用一些 try-catch 块并创建事件日志作为异常。

我认为当您从任务调度程序手动 运行 时,它由属于任务调度程序的用户(可能是管理员)执行。但是在预定的时间,应用程序试图以没有足够权限在您的代码中执行某些操作的用户身份执行。

更新

  1. 将开始于(可选)值设置为目标文件位置。没有它, system32 文件夹中的任务调度程序 运行s 但就像我之前说的, 目标应用程序在 system32.
  2. 中没有 运行 的权限
  3. 尝试将控制台应用程序的版本更改为 32 位。

    即右键单击 Goto -> Properties -> Build -> Platform Target = x86.

事实证明,对于 运行 调度程序中的任何任务,必须插入笔记本电脑充电器,否则调度程序不会执行任务。

windows 服务器或桌面系统不是这种情况。

不确定这种行为,但这是我想出来的。