4

また、「ユーザーがログオンしているかどうかにかかわらず実行する」について詳しく教えてください。作成されたタスクを実行するための将来のハードルを回避するため (ユーザー名とパスワードに関する詳細)

4

3 に答える 3

5

taskscheduler で「ユーザーがログオンしているかどうかにかかわらず実行」という設定でタスクを作成するには、次のコードを使用します。

                    var taskDefinition = taskService.NewTask();
                    taskDefinition.RegistrationInfo.Author = WindowsIdentity.GetCurrent().Name;

                    taskDefinition.RegistrationInfo.Description = "Runs Application";

                    // 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("NameOfApplication", taskDefinition);

注: ここではトリガーを使用しません。次のコードを使用して、作成したタスクをコードから直接開始できます。

                    //get task:
                    var task = taskService.RootFolder.GetTasks().Where(a => a.Name == "NameOfApplication").FirstOrDefault();

                    try
                    {
                        task.Run();
                    }
                    catch (Exception ex)
                    {
                        log.Error("Error starting task in TaskSheduler with message: " + ex.Message);
                    }
于 2016-06-16T06:16:57.387 に答える
3
ITaskFolder rootFolder = taskService.GetFolder(@"\");
rootFolder.RegisterTaskDefinition(taskName, 
                                  taskDefinition,
                                  (int)_TASK_CREATION.TASK_CREATE_OR_UPDATE,
                                  null,
                                  null, 
                                  _TASK_LOGON_TYPE.TASK_LOGON_S4U,
                                  null);

すべての _TASK_LOGON_TYPE を使用しようとしたところ、「TASK_LOGON_S4U」が [ユーザーがログオンしているかどうかに関係なく実行] を設定するために機能することがわかりました。TaskScheduler の詳細http://msdn.microsoft.com/en-us/library/windows/desktop/bb736357(v=vs.85).aspx

于 2014-06-26T01:41:22.060 に答える