enero 15, 2022

Crear un servicio de Windows en VB.NET

Entorno:. NET, Visual Basic

Introducción

Desea escribir una aplicación que supervise constantemente algunos archivos, cree un registro o lo que sea, y que se ejecute constantemente en segundo plano mientras la máquina está ocupada haciendo otra cosa. La mejor manera de hacerlo era ejecutar una aplicación de Windows de forma continua o a intervalos regulares con el uso del programador de Windows. Pero había una gran desventaja: Alguien tenía que iniciar sesión en el sistema para iniciar esta aplicación.

Esto ya no es un problema porque la mejor manera de hacer todo esto es crear un Servicio de Windows para Windows 2000/Windows NT.

¿Qué Es El Servicio Windows (Anteriormente Llamado Servicio NT)?

La función principal de un servicio Windows es ejecutar una aplicación en segundo plano. Algunas cosas que los diferencian de una aplicación de Windows son que un servicio de Windows se inicia antes de que cualquier usuario inicie sesión en el sistema (si se ha configurado para que se inicie al arrancar). El servicio se puede configurar de tal manera que requiera que el usuario lo inicie manualmente.

Además, el Servicio de Windows tiene su propio proceso; por lo tanto, se ejecuta de manera muy eficiente. Normalmente, un servicio de Windows no tendrá una interfaz de usuario por la sencilla razón de que se puede ejecutar incluso si nadie ha iniciado sesión en el sistema. Esto no es una regla; aún puede tener un servicio de Windows con una interfaz de usuario.

En Windows 2000, puede ver todos los servicios que se ejecutan en el equipo abriendo Panel de control, Herramientas administrativas y, a continuación, haciendo clic en Servicios.

Creación de un servicio de Windows en VB.NET

Antes de VB.NET, crear un servicio de Windows fue mucho trabajo. Tenías que usar algún procedimiento a nivel de sistema que no era muy fácil, pero gracias a VB.NET esto se ha vuelto muy fácil. Ahora aprenderemos cómo crear un servicio de Windows.

Deberías saber algunas cosas antes de que nos zambullamos. El servicio de Windows no está disponible en Windows 95, 98 o ME. Necesita tener Windows NT o Windows 2000 para ejecutar Servicios.

La ventaja de usar. NET es que el framework incorpora todas las clases. Esto nos ayudará a crear, instalar y controlar el Servicio de Windows.

Abra su Visual Studio .NET, cree un nuevo Proyecto de Servicio de Windows, al que llamaremos MyService, y luego haga clic en Aceptar.

Agregue el control de temporizador desde la Barra de herramientas en la pestaña Componentes. En la ventana propiedades de Timer1, cambie la propiedad Intervalo a 10000, que es 10 segundos.

El código fuente

Haga doble clic en el control Timer1 para abrir una ventana de código para Timer1_Elapsed y escriba el siguiente código. (Este código se ejecutará cada 10 segundos.)

 Dim MyLog As New EventLog() ' create a new event log ' Check if the the Event Log Exists If Not MyLog.SourceExists("MyService") Then MyLog.CreateEventSource("MyService", "Myservice Log") ' Create Log End If MyLog.Source = "MyService" ' Write to the Log MyLog.WriteEntry("MyService Log", "This is log on " & _ CStr(TimeOfDay), _ EventLogEntryType.Information)

Escriba el siguiente código en el procedimiento de inicio. (Este procedimiento se llama al iniciar el servicio, que activará el temporizador.)

 Timer1.Enabled = True

Y escriba el siguiente código en el procedimiento onStop. (Este procedimiento se llama cuando detiene el servicio, lo que desactivará el temporizador.)

 Timer1.Enabled = False

Nuestra aplicación ya está lista, pero aún quedan algunas cosas por hacer antes de seguir adelante. Cuando construimos esta aplicación, el ejecutable creado no es una aplicación de Windows; por lo tanto, no puede simplemente hacer clic y ejecutarlo. Necesita ser instalado como un servicio, pero no se preocupe; no tenemos que hacerlo manualmente. VB.Net tiene la facilidad de agregar un instalador a nuestro programa y luego usar una utilidad para instalar el servicio.

Añadir instalador al proyecto

Abrir el Servicio1.ventana de diseño de vb, haga clic con el botón derecho y, a continuación, seleccione la opción Agregar instalador. Esto agrega un proyecto de instalador, ProjectInstaller.vb, con dos controles, ServiceProcessInstaller1 y ServiceInstaller1, en nuestro proyecto existente.

Seleccione el control ServiceInstaller1 y abra la ventana de propiedades. Cambie las propiedades ServiceName y DisplayName a MyService. (Este es el nombre que desea que aparezca en la lista de servicios de la ventana Servicios.)

Seleccione el control ServiceProcessInstaller1 y abra la ventana de propiedades. Cambie la propiedad Account a LocalSystem. (Esto debe especificarse porque necesitamos ejecutarlo en nuestra máquina local.)

Ahora es el momento de compilar la aplicación y crear un ejecutable. Seleccione Solución de compilación en el menú Compilación para crear un ejecutable con instrucciones de instalación para el servicio.

Instalación del Servicio

Para instalar este servicio, necesitamos usar el programa InstallUtil, que es una utilidad.NET, para instalar el servicio de Windows. Puedes encontrar esto en la carpeta C:\WINNT\Microsoft.NET\Framework\v1.0.3705. (Esto puede ser diferente en su computadora, dependiendo de la versión que esté utilizando.)

Alternativamente, puede ejecutar la ventana de comandos. NET seleccionando Inicio, Programas, Microsoft Visual Studio. NET, Herramientas de Visual Studio. NET, Símbolo del sistema de Visual Studio.NET. Esto establece todas las rutas necesarias para usted.

Escriba el siguiente comando en esa ventana: InstallUtil C:\tgol\Myservice\Bin\Myservice.exe. (Esta es la ruta para el ejecutable del servicio que acabamos de crear. Recuerda, VB.NET se creó el ejecutable en la carpeta Bin en la carpeta del proyecto. Por favor, asegúrese de cambiar esta ruta a su ejecutable.) Por favor, mire el mensaje y el registro para asegurarse de que el servicio está instalado correctamente.

Iniciar el Servicio

Ejecutar un servicio e iniciar un servicio son dos cosas diferentes. Cuando instalamos el servicio con InstallUtil, ahora estamos ejecutando el servicio, pero aún no lo hemos iniciado. Para ver e iniciar el servicio, abra el Panel de control. Abra Herramientas administrativas, haga clic en Servicios, busque MyService, haga clic con el botón secundario y seleccione Inicio para iniciar este servicio.

Ahora nuestro servicio se ha iniciado. Abra el Visor de eventos desde Herramientas administrativas y haga clic en el Registro de la aplicación para ver los registros creados por el Servicio (MyService) cada 10 segundos. (Si no ve ningún registro, haga clic en Actualizar . Tendrás que mantenerte actualizado para ver los últimos registros de eventos.

Detener el servicio

Abra Panel de control, abra Herramientas administrativas, haga clic en Servicios, haga clic con el botón secundario en MyService y seleccione Detener para detener el servicio.

Desinstalar el Servicio

Este procedimiento es similar a instalar el servicio, pero ahora ejecutaremos el parámetro InstallUtil con /U, que desinstala el servicio:

InstallUtil / U C:\tgol\Myservice\Bin\Myservice.exe (o ruta ejecutable en su computadora). Mire el mensaje para confirmar que el servicio se ha desinstalado correctamente.

Consejos

  • Detenga el servicio y cierre la ventana de servicio antes de instalar/desinstalar el servicio.
  • Desinstale/instale siempre si realiza cambios en la aplicación de servicio.
  • Intente evitar la interfaz de usuario, las entradas y el msgbox en la aplicación de servicio.
  • Instalador de proyectos abierto.vb, seleccione ServiceInstaller1 control y abra la ventana de propiedades. Cambie la propiedad StartType a Automático si desea iniciar el servicio automático.

Conclusión

El servicio de Windows a menudo se pasa por alto. Utilice el servicio de Windows en lugar de una aplicación estándar cuando tenga que supervisar o administrar algo en segundo plano. La única desventaja es el procedimiento de instalación, pero apuesto a que hay aspectos más positivos que negativos al seleccionar el servicio de Windows sobre las aplicaciones que ejecutan el Programador de Windows.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.