Sie sind auf Seite 1von 7

Creacin de Servicio Windows en .

Net
1. Creamos un nuevo proyecto de tipo Servicio de Windows. Le podemos llamar como queramos
en mi caso WindowsService1

2. Nos vamos a las propiedades de la clase Service1.cs y ponemos a true "CanPauseAndContinue"
y "CanShutdown" que por defecto son false. Como su propio nombre indican, nos permiten
pausar, parar y reiniciar el servicio.
3. Ahora nos vamos a la parte de cdigo de Service1.cs y ponemos el siguiente cdigo:
Agregamos los siguientes espacios de nombres:
using System.Timers;
using System.IO;
En el constructor agregamos las siguientes lneas debajo de InitializeComponent:
t = new Timer(10000);
t.Elapsed +=new ElapsedEventHandler(t_Elapsed);
Declaramos el Timer t dentro de la clase:
private Timer t = null;
Agregamos el siguiente cdigo en el mtodo OnStart:
t.Start(); //Iniciamos el timer
Agregamos el siguiente cdigo en el mtodo OnStop;
t.Stop(); //Paramos el timer
Ahora creamos el evento que maneja el evento Elapsed del Timer:
void t_Elapsed(object sender, ElapsedEventArgs e)
{
try
{
string path = @"C:\log.txt";
TextWriter tw = new StreamWriter(path, true);
tw.WriteLine("A fecha de : " + DateTime.Now.ToString() + ", Intervalo: " +
t.Interval.ToString());
tw.Close();
}
catch(Exception ex)
{
System.Diagnostics.EventLog.WriteEntry("Application", "Exception: " + ex.Message);
}
}
4. Aadimos un instalador al proyecto. Botn derecho sobre el proyecto en la ventana de
Explorador de Soluciones, aadir nuevo Item.

5. Ahora nos vamos a la barra de herramientas y agregamos sobre el elemento anterior un
ServiceInstaller y un ServiceProcessInstaller. Hay que tener en cuenta que por defecto no vienen
en la barra de herramientas, pero los podis aadir con botn derecho sobre la barra de
herramientas "Choose Items", con sta accin se nos mostrar un listado de todas las
herramientas que podemos usar. Para nuestro ejemplo ordenamos por Namespace y buscamos
System.ServiceProcess y agregamos a la toolbox stos elementos. Y luego los aadimos al
Installer que hemos agregado al proyecto.

6. Configuramos las propiedades de los 2 elementos que hemos aadido en el paso 5 de la
siguiente manera:
Para el elemento ServiceInstaller
o StarType Automatic
o Description "Ejemplo de Servicio de Windows"
o DisplayName "Servicio que crea y escribe fichero"
o ServiceName "Mi Servicio"
Para el elemento ServiceProcessInstaller
o Account LocalSystem (No se recomienda este tipo de permiso, pero al tener que
escribir un fichero de texto, de esta manera no habr problemas, para el modo mas
seguro sera crearse una cuenta de usuario con los mnimos privilegios posibles)
o Parent Installer1 (cuidado con esta propiedad porque se puede desconfigurar y
producir errores)
7. Generamos el proyecto.
8. Agregamos a la solucin un proyecto de setup. Fichero/Aadir/Nuevo Proyecto

9. Con botn derecho sobre el proyecto de setup en la ventana de explorador de soluciones,
aadimos "Project Output", en project nos aseguramos de tener nuestro proyecto de servicio de
Windows, y estar seleccionada "Primary output"

10. Con botn derecho sobre el proyecto de setup en la ventana de explorador de soluciones, View
/ Custom Actions.
11. Ahora en "Custom Actions" con botn derecho "Add Custom Actions", Seleccionamos
"Application Folder" y luego "Primary output from WindowsService1 (Active)"



12. Muy importante es cambiar la propiedad DefaultLocation de "Application Folder" porque una
vez generado el setup os puede dar el error que menciono en mi artculo anterior. En mi ejemplo
[ProgramFilesFolder]\Service1 que nos lo instalar dentro de archivos de programa, en una
carpeta llamada Service1.
13. Ahora generamos el proyecto de setup. Y una vez generado lo instalamos, para sto pinchando
sobre el setup.exe generado, o desde el visual studio con botn derecho sobre el proyecto de setup
instalar.
14. Una vez instalado el servicio lo ponemos en marcha o bien reiniciando, o con botn derecho
sobre "Mi Pc"/Administrar, nos vamos a Servicios y Aplicaciones\Servicios y buscamos el
servicio que hemos instalado, para eso miramos en Descripcin lo que hemos puesto en la
propiedad "Description" o por nombre lo hemos puesto en DisplayName, y sobre l con botn
derecho "Iniciar". Esperamos 10 segundos y nos vamos a C donde tenemos que tener un archivo
log.txt.


15. Una vez probado podis detener el servicio y desinstalarlo ya sea con el visual studio de la
misma forma que lo hemos instalado o en agregar o quitar programas del panel de control. No
lo dejis corriendo porque os puede llenar el disco con el tiempo!!!!!!