recuperacion que para entrar entorno descargar como acceder .net windows-services service

.net - que - Instalar el servicio de Windows con la acción de recuperación para reiniciar



para que es windows recovery environment (4)

Estoy instalando un servicio de Windows usando las clases ServiceProcessInstaller y ServiceInstaller .

He utilizado ServiceProcessInstaller para establecer el tipo de inicio, nombre, etc. Pero, ¿cómo configuro la acción de recuperación para reiniciar?

Sé que puedo hacerlo manualmente después de instalar el servicio yendo a la consola de administración de Servicios y cambiando la configuración en la pestaña de recuperación de las propiedades del servicio, pero ¿hay alguna manera de hacerlo durante la instalación?


Después de muchos intentos, lo resolví usando la aplicación de línea de comandos sc .

Tengo un archivo por lotes con installutil y sc. Mi archivo por lotes es similar a:

installutil.exe "path to your service.exe" sc failure "your service name" reset= 300 command= "some exe file to execute" actions= restart/20000/run/1000/reboot/1000

Si desea obtener la documentación completa del comando sc, siga este enlace: SC.exe: se comunica con el controlador de servicio y los servicios instalados

Nota: Necesita agregar un espacio después de cada símbolo igual (=). Ejemplo: reset = 300




Puede establecer las opciones de recuperación usando sc . Lo siguiente configurará el servicio para que se reinicie después de una falla:

sc failure [servicename] reset= 0 actions= restart/60000

Esto se puede llamar fácilmente desde C #:

static void SetRecoveryOptions(string serviceName) { int exitCode; using (var process = new Process()) { var startInfo = process.StartInfo; startInfo.FileName = "sc"; startInfo.WindowStyle = ProcessWindowStyle.Hidden; // tell Windows that the service should restart if it fails startInfo.Arguments = string.Format("failure /"{0}/" reset= 0 actions= restart/60000", serviceName); process.Start(); process.WaitForExit(); exitCode = process.ExitCode; } if (exitCode != 0) throw new InvalidOperationException(); }