NSSM - the Non-Sucking Service Manager
Credits
Thanks Bernard Loh for finding the bug with service recovery.
Thanks Benjamin Meyrargue for fixing compilation on 64-bit Windows.
Thanks Joel Reinford for spotting a commandline truncation bug.
Thanks Arve Knudsen for spotting a bunch of bugs.
Thanks Laszlo Keresztfalvi and Peter Wagemans for restart throttling ideas.
Thanks Richard Gerrits for noticing that Windows doesn't allow quotes in pathnames, hence nssm barfs if you set AppDirectory to contain them.
Thanks Eugene Lifshitz for advising how to compile messages.mc correctly and for sanitising some CreateProcess() usage.
Thanks Rob Sharp for noticing that nssm didn't support srvany's AppEnvironment registry setting.
Thanks Szymon Nowak for Windows 2000 compatibility help.
Thanks François-Régis Tardy for French translations.
Thanks Riccardo Gusmeroli for Italian translations.
Thanks Brian Baxter for notes on how to escape quotes from the command prompt.
Thanks Isabella Sanfelipo for notes on how to escape quotes in a batch script.
Thanks Russ Holmann for suggesting making the timeouts configurable when waiting for the application to exit.
Thanks Paul Spause for spotting a bug with services installed from the command line with version 2.19.
Thanks BUGHUNTER for spotting a bug with services installed from the GUI with version 2.20.
Thanks Deane Barker for spotting my inability to create releases properly.
Thanks Doug Watson for suggesting file rotation.
Thanks to Арслан Сайдуганов for suggesting setting process priority.
Thanks to Robert Middleton for suggestion and draft implementation of process affinity support.
Thanks to Andrew RedzMax for suggesting an unconditional restart delay.
Thanks Bryan Senseman for noticing that applications with redirected stdout and/or stderr which attempted to read from stdin would fail.
Thanks Czenda Czendov for noticing that executables built with Visual Studio 2013 didn't work.
Thanks Marco Certelli for Italian translations and various suggestions and advice.
Thanks Alessandro Gherardi for help with environment settings.
Thanks Allen Vailliencourt for noticing that under certain circumstances nssm couldn't configure a local user account to run the service.
Thanks Sam Townsend for spotting a regression with TerminateProcess().