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