Tengo un ejecutable de servicio de Windows que sé que está escrito en .NET que necesito instalar con un nombre de servicio diferente para evitar un conflicto. La instalación no proporciona de todos modos para especificar un nombre de servicio. Si solo tengo acceso al binario, ¿hay algún modo de anular el nombre del servicio cuando lo instale con installutil?¿Alguna manera de anular el nombre de servicio de Windows .NET sin volver a compilar?
Respuesta
¿Tienes que usar InstallUtil? Estos son los comandos para hacer lo que desee mediante sc:
sc create MyService binPath= "MyService.exe" DisplayName= "MyService"
sc description MyService "My description"
Referencia: http://support.microsoft.com/kb/251192
Intente instalar su servicio con sc.exe. Una búsqueda rápida arrojará mucha documentación. Con esa herramienta es fácil modificar los servicios existentes y agregar nuevos, incluidos los nombres.
Editar: Instalo mis servicios .NET con esta herramienta.
No es cierto que InstallUtil no permite configurar el nombre del servicio. Lo hago todo el tiempo como este
InstallUtil.exe /servicename="<service name>" "<path to service exe>"
no funciona para mí incluso con cmd con privilegios de administrador. –
si ya tiene un servicio con el mismo nombre que exe, dará el error 'System.ComponentModel.Win32Exception: El servicio especificado ya existe'. Estaba intentando instalar 2 instancias del mismo servicio y nombrarlas de manera diferente. Use los métodos de creación de sc que figuran en las respuestas siguientes – PUG
No funciona. Da un error de que mi servicio ya existe. – Loophole
Esto es exactamente trabajó para mí!
Espero que alguien pueda usar esto.
- Agregar proyecto de instalación en el servicio
método Add para obtener el nombre CustomService
private void RetrieveServiceName() { var serviceName = Context.Parameters["servicename"]; if (!string.IsNullOrEmpty(serviceName)) { this.SomeService.ServiceName = serviceName; this.SomeService.DisplayName = serviceName; } }
llamada en instalar y desinstalar
public override void Install(System.Collections.IDictionary stateSaver) { RetrieveServiceName(); base.Install(stateSaver); } public override void Uninstall(System.Collections.IDictionary savedState) { RetrieveServiceName(); base.Uninstall(savedState); }
installutil /servicename=”My Service [SysTest]” d:\pathToMyService\Service.exe
MUY útil - gracias. – Mani5556
Esto fue muy útil, tuve que recompilar mi ejecutable de servicio para que funcione una vez que agregué este código, eso no fue un problema para mí. –
- 1. Instalar el servicio de Windows sin InstallUtil.exe
- 2. ¿Cómo obtengo el nombre de usuario actualmente registrado de un servicio de Windows en .NET?
- 3. ¿Hay alguna manera de anular ConfigurationManager.AppSettings?
- 4. Instalar un servicio de Windows .NET sin InstallUtil.exe
- 5. ¿Hay alguna manera de volver a abrir un socket?
- 6. Cómo instalar un servicio de Windows .NET sin InstallUtil.exe vb.net
- 7. ¿Alguna manera de anular el operador y en Python?
- 8. ¿Hay alguna manera de anular strings.xml en res/values?
- 9. ¿Hay alguna manera de anular los valores de zoom del servicio Google Directions?
- 10. ¿Hay alguna manera de anular automáticamente ToString() en una clase?
- 11. ¿Hay alguna manera de restablecer un DbContext sin desecharlo y volver a instalarlo?
- 12. ¿Hay alguna manera de volver a vincular una solución sin reconstruir ningún proyecto?
- 13. Averiguar el nombre del proceso de ejecución del servicio de Windows .NET 1.1
- 14. Actualizar un dll de referencia en un proyecto C# sin volver a compilar el proyecto
- 15. ¿Hay alguna manera, en Java, de verificar el estado de un servicio de Windows?
- 16. ¿Hay alguna manera de cambiar el color de las trazas en jQuery flot sin volver a dibujar todo el gráfico?
- 17. ¿Hay alguna manera de "anular" un método con la reflexión?
- 18. Modificar y volver a compilar el SDK de Android
- 19. Encabezados de autenticación de Windows sin .NET. ¿Posible?
- 20. Problema extraño con un servicio Windows .NET
- 21. ¿Cómo puedo cambiar el nombre de un servicio de Windows?
- 22. .NET El servicio de Windows necesita usar STAThread
- 23. Instalar el servicio de Windows con nombre personalizado
- 24. Cambiar el nombre de la columna sin volver a crear la tabla MySQL
- 25. ¿Hay alguna manera de olfatear el tráfico de pipas con nombre en Windows?
- 26. .Net - Servicio web de consumo sin WSDL
- 27. ¿Hay alguna manera de obligar a Firefox a volver a mostrar un título/información sobre herramientas?
- 28. ¿Puedo cambiar el espacio de nombre de la interfaz de WCF ServiceContract sin cambiar el servicio?
- 29. Creando el servicio de Windows sin Visual Studio
- 30. Servicio de Windows sin interferencia de Visual Studio
Esto parece exactamente lo que quiero, pero no puedo hacerlo funcionar. Sigo recibiendo un mensaje de "uso". – Nathan
Mi problema es que aparentemente * debe * haber un espacio entre el signo igual y el valor de binPath, p. sc create ahSchedulerService binPath = "MyService.exe", no sc create ahSchedulerService binPath = "MyService.exe". – Nathan
Ah, me olvidé de eso. Perdón por darte un mal ejemplo. –