0

既存のスケジュールされたタスクに関する情報を取得しようとしています (taskschd.dll 用に生成された Interop インターフェイスを使用):

ITaskService ts = new TaskScheduler.TaskScheduler();
ts.Connect();

ITaskFolder tf = ts.GetFolder("\\");
var tasks = tf.GetTasks((int)_TASK_ENUM_FLAGS.TASK_ENUM_HIDDEN).Cast<IRegisteredTask>();
IRegisteredTask task = tasks.FirstOrDefault(t => t.Path == "\\MyTask");
if (task != null) {
    var definition = task.Definition;
    // do stuff
}

これは、Windows 7 および 8.1 マシンでの私のテストでは非常にうまく機能します。Definitionただし、これを Windows 10 でテストすると、プロパティにアクセスするときに例外が発生することがあります。

System.ArgumentException: Value does not fall within expected range.
   at TaskScheduler.IRegisteredTask.get_Definition()
   at MyApp.MainForm..ctor()

1 台のマシンでは、照会時にこのエラーを生成するのは HP システム タスクです。Win32_ScheduledJobもう 1 つは、古いインターフェイス ( NetScheduleJobAdd )を使用して作成されたカスタム タスクです。(ただし、この同じタスクは、Windows 7 および 8.1 マシンで正常に照会できます。)

(上記のコードは常に管理者として実行されます。)

これは、Windows 10 のタスク スケジューラの既知のバグですか?

4

1 に答える 1