NSSM - the Non-Sucking Service Manager
Building NSSM with Visual Studio
The recommended environment for building nssm is Visual Studio 2008. Visual Studio 6 and Visual Studio 2005 don't have a new enough SDK (February 2003 is reported as the last SDK compatible with VC6). They might be able to be convinced to build nssm with sufficient hoop jumping. It's easier to get Visual Studio Express...
Visual Studio 2010, 2012 and 2013 have also been tested and will build nssm, however by default they will generate binaries which do not run on Windows releases older than XP SP2 for reasons explained on MSDN. If you require back compatibility you should configure Visual Studio to use the v90 platform toolset. Right click the nssm project and select Properties. Choose All Configurations in the Configurations dropdown and All Platforms in the Platform dropdown. In the General section change Platform Toolset to Visual Studio 2008 (v90) (simply called v90 in Visual Studio 2010. The project will now build executables which run on older Windows releases. You probably need to have Visual Studio 2008 installed in parallel for the steps above to work.
Building NSSM with Visual Studio Express
Visual Studio C++ 2008 Express will build nssm with some tweaks.
Missing mc.exe: You must install the Windows SDK in order to get mc.exe, which is needed to build the messages file. After installing the SDK you need to verify where mc.exe is installed (eg, %PROGRAMFILES(X86)%\Windows Kits\8.0\bin\x64 for the Windows 8 SDK on a 64-bit machine) and either add that directory to your PATH or to the Visual Studio search path (Tools / Options / Projects and Solutions / VC++ Directories).
Missing 64-bit compiler: Visual Studio Express does not ship with 64-bit compilers. There is much discussion on the internet about how to obtain and install them. The concensus is that the instructions in this blog post are helpful. I haven't tried them. YMMV.
Missing afxres.h: Trying to build version 2.16 or older will fail because Visual Studio Express does not ship afxres.h. nssm does not actually need it and newer versions are configured not to try to include it.