Along with my hosted Windows service's installer, is it possible to set the recovery options when errors occur?

1.6k Views Asked by At

I'm following along with http://msdn.microsoft.com/en-us/library/bb332338.aspx to host my service as a Windows service. It installs just fine, but I would like to actually set the recovery options to "Restart the Service" on a "First failure", "Second failure", or "Subsequent failure". How can this be achieved?

2

There are 2 best solutions below

1
On BEST ANSWER

The options for doing so are not simple, they require invoking some methods to pull it off. You could use something like the following extension, http://www.codeproject.com/Articles/6164/A-ServiceInstaller-Extension-That-Enables-Recovery or rolling your own using the commands.

[DllImport("advapi32.dll", EntryPoint="ChangeServiceConfig2")]
public static extern bool 
ChangeServiceFailureActions( IntPtr hService, int dwInfoLevel,
[ MarshalAs( UnmanagedType.Struct ) ] ref SERVICE_FAILURE_ACTIONS lpInfo );


[DllImport("advapi32.dll", EntryPoint="ChangeServiceConfig2")]
public static extern bool 
ChangeServiceDescription( IntPtr hService, int dwInfoLevel, 
[ MarshalAs( UnmanagedType.Struct ) ] ref SERVICE_DESCRIPTION lpInfo );

See http://netcode.ru/dotnet/?lang=&katID=30&skatID=277&artID=7660 for more information

3
On

You can set recovery options using sc.exe from the command line. This answer has a good example of how to do this using C#:

Install Windows Service with Recovery action to Restart