Como você designa onde uma Tarefa Agendada é criada?

4

Existe uma opção em possivelmente SCHTASKS para definir onde um trabalho agendado é realmente criado?

    
por John Gardeniers 20.06.2011 / 00:47

2 respostas

2

Em vez de chamar o SCHTASKS , eu recomendaria usar o wrapper .Net em torno da classe COM TaskScheduler , através do qual você pode interagir com o Agendador de Tarefas do Windows. É necessário um pouco mais de código, mas oferece um rico conjunto de propriedades e um bom controle das tarefas. Fazer isso pode usar ITaskFolder para criar pastas para sua (s) tarefa (s). Eu incluo som do código que eu uso abaixo (que irá criar uma tarefa chamada "MyTaskName" na pasta "MyTaskFolder". Também confira este artigo para uma boa informação sobre o assunto .

    TaskScheduler.TaskScheduler scheduler = new TaskScheduler.TaskScheduler();
    scheduler.Connect(null, null, null, null); //run as current user.

    ITaskDefinition taskDef = scheduler.NewTask(0);
    taskDef.RegistrationInfo.Author = task.TaskAuthor;
    ...

    ITimeTrigger trigger = (ITimeTrigger)taskDef.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_TIME);
    ...

    IExecAction action = (IExecAction)taskDef.Actions.Create(_TASK_ACTION_TYPE.TASK_ACTION_EXEC);
    ...

    ITaskFolder root = scheduler.GetFolder("\");
    root.CreateFolder("MyTaskFolder");      //// here

    IRegisteredTask regTask = root.RegisterTaskDefinition(
        "MyTaskName",
        taskDef,
        (int)_TASK_CREATION.TASK_CREATE_OR_UPDATE,
        null, // user
        null, // password
        _TASK_LOGON_TYPE.TASK_LOGON_INTERACTIVE_TOKEN, //User must already be logged on. The task will be run only in an existing interactive session.
        "" //SDDL
        );

Observe que isso lançará uma exceção se a pasta já existir. Ypu pode obter as pastas disponíveis usando

ITaskFolderCollection folders = root.GetFolders(0);
    
por 20.06.2011 / 00:57
1

Basta usar um nome de caminho na string do nome da tarefa ( /TN parameter). Por exemplo, /TN Foo\Bar criará uma tarefa chamada Bar na pasta Foo.

    
por 20.06.2011 / 01:30