Compartir vía


Ejemplo de desencadenador de inicio de sesión (scripting)

En este ejemplo de scripting se muestra cómo crear una tarea programada para ejecutar el Bloc de notas cuando un usuario inicia sesión. La tarea contiene un desencadenador de inicio de sesión que especifica un límite de inicio para que la tarea se inicie y un identificador de usuario que especifique el usuario. La tarea se registra mediante el grupo Administradores como contexto de seguridad para ejecutar la tarea.

En el procedimiento siguiente se describe cómo programar un archivo ejecutable como el Bloc de notas para que se inicie cuando un usuario especificado inicia sesión.

Para programar que el Bloc de notas se inicie cuando un usuario inicia sesión

  1. Cree un objeto TaskService . Este objeto permite crear la tarea en una carpeta especificada.
  2. Obtenga una carpeta de tareas y cree una tarea. Utilice el método TaskService.GetFolder para obtener la carpeta donde se almacena la tarea y el método TaskService.NewTask para crear el objeto TaskDefinition que representa la tarea.
  3. Defina información sobre la tarea mediante el objeto TaskDefinition . Utilice la propiedad TaskDefinition.Settings para definir la configuración que determina cómo el servicio Programador de tareas realiza la tarea y la propiedad TaskDefinition.RegistrationInfo para definir la información que describe la tarea.
  4. Cree un desencadenador de inicio de sesión mediante la propiedad TaskDefinition.Triggers . Esta propiedad proporciona acceso al objeto TriggerCollection . Use el método TriggerCollection.Create (especificando el tipo de desencadenador que desea crear) para crear un desencadenador de inicio de sesión. Al crear el desencadenador, establezca el límite inicial y el límite final del desencadenador para activar y desactivar el desencadenador. Debe establecer la propiedad UserId del desencadenador para que las acciones de la tarea se programen para que se ejecuten cuando el usuario especificado inicie sesión después del límite de inicio.
  5. Cree una acción para que la tarea se ejecute mediante la propiedad TaskDefinition.Actions . Esta propiedad proporciona acceso al objeto ActionCollection . Use el método ActionCollection.Create para especificar el tipo de acción que desea crear. En este ejemplo se usa un objeto ExecAction , que representa una acción que inicia un ejecutable.
  6. Registre la tarea mediante el método TaskFolder.RegisterTaskDefinition . En este ejemplo se registra la tarea para que use el grupo Administradores como contexto de seguridad para ejecutar la tarea.

En el siguiente ejemplo de VBScript se muestra cómo programar una tarea para ejecutar el Bloc de notas cuando un usuario inicia sesión.

'---------------------------------------------------------
' This sample schedules a task to start notepad.exe when a user logs on.
'---------------------------------------------------------

' A constant that specifies a logon trigger.
const TriggerTypeLogon = 9
' A constant that specifies an executable action.
const ActionTypeExecutable = 0   

'********************************************************
' Create the TaskService object.
Set service = CreateObject("Schedule.Service")
call service.Connect()

'********************************************************
' Get a folder to create a task definition in. 
Dim rootFolder
Set rootFolder = service.GetFolder("\")

' The taskDefinition variable is the TaskDefinition object.
Dim taskDefinition
' The flags parameter is 0 because it is not supported.
Set taskDefinition = service.NewTask(0) 

'********************************************************
' Define information about the task.

' Set the registration info for the task by 
' creating the RegistrationInfo object.
Dim regInfo
Set regInfo = taskDefinition.RegistrationInfo
regInfo.Description = "Task will execute Notepad when a " & _
    "specified user logs on."
regInfo.Author = "Author Name"

' Set the task setting info for the Task Scheduler by
' creating a TaskSettings object.
Dim settings
Set settings = taskDefinition.Settings
settings.StartWhenAvailable = True

'********************************************************
' Create a logon trigger.
Dim triggers
Set triggers = taskDefinition.Triggers

Dim trigger
Set trigger = triggers.Create(TriggerTypeLogon)

' Trigger variables that define when the trigger is active.
Dim startTime, endTime
startTime = "2006-05-02T10:49:02"
endTime = "2006-05-02T10:52:02"

WScript.Echo "startTime :" & startTime
WScript.Echo "endTime :" & endTime

trigger.StartBoundary = startTime
trigger.EndBoundary = endTime
trigger.ExecutionTimeLimit = "PT5M"    ' Five minutes
trigger.Id = "LogonTriggerId"
trigger.UserId = "DOMAIN\UserName"   ' Must be a valid user account   

'***********************************************************
' Create the action for the task to execute.

' Add an action to the task. The action executes notepad.
Dim Action
Set Action = taskDefinition.Actions.Create( ActionTypeExecutable )
Action.Path = "C:\Windows\System32\notepad.exe"

WScript.Echo "Task definition created. About to submit the task..."

'***********************************************************
' Register (create) the task.
const createOrUpdateTask = 6
call rootFolder.RegisterTaskDefinition( _
    "Test Logon Trigger", taskDefinition, createOrUpdateTask, _
    "Builtin\Administrators", , 4)

WScript.Echo "Task submitted."

Uso del Programador de tareas