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?
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