2009-03-06 32 views

Respuesta

1

Parece que desea utilizar una tarea programada en lugar de un servicio. Las tareas programadas se pueden ejecutar cada hora, mientras está conectado, y también debe poder interactuar con su escritorio. Solo recuerda que una tarea ejecutada como usuario normal no puede interactuar (enviar entrada) a un programa elevado si estás usando Vista/Windows Server 2008 con el Control de cuentas de usuario habilitado.

2

Como se mencionó anteriormente, una tarea programada es lo que está buscando. Para ejecutar un script como servicio, lea esto:

Q4. ¿Cómo puedo ejecutar mi script como un servicio? Esta es también una pregunta con respuestas múltiples, y ninguna de ellas es la única forma de hacerlo. La primera pregunta que debes hacerte es si deseas o no instalar el servicio en otras computadoras además del tuyo.

A1. If you only wish to install the service on your own computer, The easiest way to do this is to use Pirmasoft RunAsSvc. This program makes services easy to install and easy to remove when necessary. 
A2. If you wish to make the service available to anyone running your script, you can use SRVANY.EXE and ServiceControl.au3. You can then use this code to install your script as a service: 
    #include "ServiceControl.au3" 
    $servicename = "MyServiceName" 
    _CreateService("", $servicename, "My AutoIt Script", "C:\Path_to_srvany.exe", "LocalSystem", "", 0x110) 
    RegWrite("HKLM\SYSTEM\CurrentControlSet\Services\" & $servicename & "\Parameters", "Application", "REG_SZ", @ScriptFullPath) 

or use the following code to delete this service: 
    #include "ServiceControl.au3" 
    $servicename = "MyServiceName" 
    _DeleteService("", $servicename) 

Hay una advertencia a la creación de AutoIt como un servicio. Si el servicio no se instala utilizando el código anterior, debe tener la opción "permitir que el servicio interactúe con el escritorio" o, de lo contrario, las funciones de automatización como Control * o Win * no funcionarán. Para asegurar el servicio tiene, de hecho este ajuste, utilice el siguiente código: RegWrite ("HKLM \ SYSTEM \ CurrentControlSet \ Services [ServiceName]", "tipo", "REG_DWORD", 0x110)

tomada de la Tema de preguntas frecuentes en los foros de AutoIt. www.autoitscript.com/forum/index.php?showtopic=37289)

4

Puede hacer fácilmente que un script autoit se ejecute como un servicio using service.au3 written by archer de los foros de autoit. Desafortunadamente o afortunadamente ya que es una medida de seguridad. Un servicio debe comenzar independientemente de la sesión de usuario actual (antes de iniciar sesión). No puede acceder a las API de envío para la manipulación de entrada de la sesión de usuario actual desde allí. Suena mucho más como si necesitaras una tarea programada y no un servicio.

Cuestiones relacionadas