2010-10-08 32 views
11

Tengo una aplicación de servicio de Windows desarrollada en C#. El mismo servicio debe ejecutarse con diferentes archivos de configuración. Para ejecutar estos en la misma máquina, necesitaría cambiar el nombre del servicio. Puedo crear varias copias de la solución, pero no estoy seguro de cómo cambiar los nombres de los servicios.¿Cómo puedo cambiar el nombre de un servicio de Windows?

Gracias

Respuesta

11

En su clase de servicio de win que deriva de ServiceBase, hay una propiedad heredada que puede establecer llamada ServiceName. Puede hacer una app.config, agregar una configuración para el nombre del servicio y hacer que su clase de servicio de win asigne esa propiedad en consecuencia. De esta forma, cada nombre de servicio será único siempre que cambie la configuración en la aplicación.config.

+1

Este ejemplo lo analiza con un poco más de detalle si alguien lo necesita: http://www.codeproject.com/Articles/21320/Multiple-Instance-NET-Windows-Service –

+1

Para el enlace de Joel, los detalles de cómo obtener el ServiceName de app.config desde el instalador no funcionó para mí (probablemente fuera de fecha ya que fue escrito para .NET 2.0), pero esta solución funcionó bien: http://stackoverflow.com/questions/8516701/how -to-get-windows-service-name-from-app-config –

2

La configuración de los servicios de Windows se almacenan en la registy, bajo HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services ... es probable que desee cambiar tanto el nombre de la clave (la "carpeta" , y el nombre real del servicio aquí) y el valor "Mostrar nombre".

Podría ser mejor que use a tool like SC.EXE to configure services, para evitar causar problemas con ediciones de Registro incorrectas. Aunque SC no puede cambiar el nombre de un servicio, le permite eliminar y crear servicios (¡asegúrese de obtener todos los ajustes correctos!).

+0

Lo siento si mi pregunta era un poco confusa ... Quería cambiar el nombre del servicio en la solución en sí. ¿Cómo puede hacerse esto? – Prady

2

El nombre del servicio también se puede editar a través de ProjectInstaller modo de diseño. Hay una propiedad llamada ServiceName en el ServiceInstaller.

Cuestiones relacionadas