visual una studio servicios servicio llamar instalar instalador instalacion hora error ejecutar determinada desde crear aplicacion c# windows-services

c# - una - Instalación de un servicio de Windows desarrollado por usted mismo



instalar servicio windows c# visual studio 2017 (6)

Estoy tratando de implementar un servicio que escribí. Aquí está el archivo InstallLog:

Installing assembly ''c:/Users/brwatson/Development/Projects/TweetLinks/TweetLinkQueue/bin/Debug/TweetLinkQueue.exe''. Affected parameters are: logtoconsole = assemblypath = c:/Users/brwatson/Development/Projects/TweetLinks/TweetLinkQueue/bin/Debug/TweetLinkQueue.exe logfile = c:/Users/brwatson/Development/Projects/TweetLinks/TweetLinkQueue/bin/Debug/TweetLinkQueue.InstallLog Installing service TweetLinkService... Creating EventLog source TweetLinkService in log Application... Rolling back assembly ''c:/Users/brwatson/Development/Projects/TweetLinks/TweetLinkQueue/bin/Debug/TweetLinkQueue.exe''. Affected parameters are: logtoconsole = assemblypath = c:/Users/brwatson/Development/Projects/TweetLinks/TweetLinkQueue/bin/Debug/TweetLinkQueue.exe logfile = c:/Users/brwatson/Development/Projects/TweetLinks/TweetLinkQueue/bin/Debug/TweetLinkQueue.InstallLog Restoring event log to previous state for source TweetLinkService. An exception occurred during the Rollback phase of the System.Diagnostics.EventLogInstaller installer. System.Security.SecurityException: The source was not found, but some or all event logs could not be searched. Inaccessible logs: Security. An exception occurred during the Rollback phase of the installation. This exception will be ignored and the rollback will continue. However, the machine might not fully revert to its initial state after the rollback is complete.

Como puede ver, no está funcionando. No estoy seguro de cómo proceder, y he golpeado la pared con Bing y Google. Establecí la Cuenta en LocalSystem para el serviceProcessInstaller1. El código compila bien, pero ahora me gustaría ejecutarlo ... ¿Alguna idea? Soy un administrador en mi caja y estoy ejecutando el comando:

InstallUtil TweetLinkQueue.exe

desde la consola de administración VS2008.

ACTUALIZADO CON / Opción ShowCallStack

Pila de llamadas

An exception occurred during the Install phase. System.Security.SecurityException: The source was not found, but some or all eve nt logs could not be searched. Inaccessible logs: Security. at System.Diagnostics.EventLog.FindSourceRegistration(String source, String m achineName, Boolean readOnly) at System.Diagnostics.EventLog.SourceExists(String source, String machineName ) at System.Diagnostics.EventLogInstaller.Install(IDictionary stateSaver) at System.Configuration.Install.Installer.Install(IDictionary stateSaver) at System.ServiceProcess.ServiceInstaller.Install(IDictionary stateSaver) at System.Configuration.Install.Installer.Install(IDictionary stateSaver) at System.Configuration.Install.Installer.Install(IDictionary stateSaver) at System.Configuration.Install.AssemblyInstaller.Install(IDictionary savedSt ate) at System.Configuration.Install.Installer.Install(IDictionary stateSaver) at System.Configuration.Install.TransactedInstaller.Install(IDictionary saved State)

y aquí está el constructor:

public TweetLinkService() { InitializeComponent(); if (!EventLog.SourceExists("TweetLinkQueue")) { EventLog.CreateEventSource("TweetLinkQueue", "Log"); TweetLinksLog.Source = "TweetLinkQueue"; TweetLinksLog.Log = "Log"; TweetLinksLog.WriteEntry("Log Created!"); } }

ACTUALIZADO con ENtry Point:

namespace TweetLinkQueue { static class Program { /// <summary> /// The main entry point for the application. /// </summary> static void Main() { ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { new TweetLinkService() }; ServiceBase.Run(ServicesToRun); } } }


La cuenta LocalSystem normalmente no tiene permiso para leer el registro de eventos de seguridad (o para crear orígenes de eventos para el caso).

La solución más fácil y segura es crear un programa de instalación de origen de eventos que pueda ejecutar con sus propias credenciales de nivel de administración en cualquier máquina para la que desee ejecutar esto. Incluso podría valer la pena probar esto como una prueba simple, solo para ver si su cuenta tiene permiso para hacerlo.

class Program { static void Main(string[] args) { EventLog.CreateEventSource("TestSource", "Application"); } }

Si ejecutas eso, ¿tiene éxito? Puede verificarlo mirando las propiedades del registro de la Aplicación y navegando por las fuentes del Evento en su pestaña Filtro.

Alternativamente, dado que los servicios deben instalarse de todos modos, puede agregar EventLogInstaller (que tiene un nombre erróneo, es realmente un ''EventSourceInstaller'' que creará EventLogs según sea necesario) en lugar de utilizar EventLog.CreateEventSource en el constructor del servicio.


Mi problema era que aparecía una ventana para ingresar credenciales y estaba ingresando mi nombre de usuario sin el dominio. Una vez que ingresé domain / username todo estaba bien.


No estoy seguro de cuál es tu problema específico. Me parece que el problema se produce al crear la fuente EventLog. Verifique nuevamente que haya hecho esa parte correctamente. Puede hacer referencia paso a paso here . EDITAR: MIRAR ESPECÍFICAMENTE EN EL PASO 9. El problema puede estar ocurriendo porque estás jugando con el registro de la aplicación en lugar de uno específico para tu aplicación.

No tiene nada de malo utilizar InstallUtil, pero si necesita instalar su servicio en una máquina extranjera, no está garantizado que InstallUtil esté allí. Puede seguir este paso paso a paso para hacer que el servicio ejecutable de Windows se instale / desinstale sin la necesidad de InstallUtil. Vea here para esas instrucciones.


Obtuve los mismos errores inexplicables al instalar servicios de Windows. En nuestro caso, el usuario era el problema.

La instalación del servidor con el usuario administrador funcionó, pero no para un administrador local. Sin embargo, esta no es una solución preferida, por lo que usamos esta información para crear un usuario diferente que pudiera instalar el servicio.


Para resolver este problema, haga clic derecho en su Símbolo del sistema de Visual Studio 2008 y haga clic en ejecutar como administrador, luego ejecute el comando como installutil C: / mcWebService / bin / Debug / mcWebService.exe y le mostrará el mensaje correcto. Espero que esto solucione tu solución.


Solo estaba teniendo este problema y era porque no estaba ejecutando el símbolo del sistema de Visual Studio como administrador.