TaskScheduler のタスクをプログラムで作成して実行します。次のコードを使用しています。
var taskDefinition = taskService.NewTask();
taskDefinition.RegistrationInfo.Author = WindowsIdentity.GetCurrent().Name;
taskDefinition.RegistrationInfo.Description = "Runs Programm";
// TaskLogonType.S4U = run wether user is logged on or not
taskDefinition.Principal.LogonType = TaskLogonType.S4U;
var action = new ExecAction(path, arguments);
taskDefinition.Actions.Add(action);
taskService.RootFolder.RegisterTaskDefinition("TaskName", taskDefinition);
//get task:
var task = taskService.RootFolder.GetTasks().Where(a => a.Name == "TaskName").FirstOrDefault();
try
{
task.Run();
}
catch (Exception ex)
{
log.Error("Error starting task in TaskSheduler with message: " + ex.Message);
}
タスクが作成され、TaskScheduler ウィンドウに表示されますが、チェックを外したいチェックボックスが 1 つあります。「パスワードを保存しないでください。タスクはローカル リソースにのみアクセスできます」と呼ばれます。
その上にある「ユーザーがログオンしているかどうかにかかわらず実行する」というラジオボタンを確認する方法を見つけました。これは次の方法で設定されます。
taskDefinition.Principal.LogonType = TaskLogonType.S4U;
しかし、その下にあるチェックボックスも false に設定するにはどうすればよいでしょうか?