簡體   English   中英

在 C# 中以編程方式創建的 Windows 任務計划程序未自動運行

[英]Windows task scheduler created programmatically in C# not running automatically

我在 c# 中以編程方式創建了 windows 任務調度程序。任務已成功創建並計划正確運行。 在預定時間,它表示任務正在運行但沒有任何結果,並且更新下一個預定時間。

但上次運行時間和上次運行結果不會更新。

上次運行結果為:任務尚未運行。(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);

任何幫助將非常感激!

事實證明,要在調度程序中運行任何任務,筆記本電腦充電器必須插入,否則調度程序不會執行任務。

windows 服務器或桌面系統不是這種情況。

不確定這種行為,但這就是我想出來的。

首先檢查執行權限。 然后在進程看起來“正在運行”時檢查任務管理器是否真的在運行。 如果是,請嘗試使用一些 try-catch 塊並創建事件日志作為例外。

我認為當您從任務調度程序手動運行時,它由屬於任務調度程序的用戶(可能是管理員)執行。 但是在預定的時間,應用程序試圖以沒有足夠權限在代碼中執行某些操作的用戶身份執行。

更新

  1. 將 Start in(可選)值設置為目標文件位置。 沒有它,任務調度程序會在 system32 文件夾中運行,但就像我之前所說的,目標應用程序將沒有在 system32 中運行的權限。
  2. 嘗試將控制台應用程序的版本更改為 32 位。

    即右鍵單擊 Goto -> Properties -> Build -> Platform Target = x86。

對我來說,問題是可執行文件因“應用程序錯誤”而崩潰。 您在任務計划程序中看不到任何錯誤。 它只會將上次運行結果顯示為“任務尚未運行。(0x41303)”

要獲取錯誤,請檢查事件查看器

事件查看器 -> Windows 日志 -> 應用程序

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM