This is how you add a new Service in Windows Server 2012 (or other windows versions for that matter) and how to find a solution for the error: windows could not start the service on local computer error 1053. There are three ways to create a service, let us take a look at the first two. Open up Windows Powershell and remember to start it as administrator. While there, run:
New-Service -Name "My Cool Program" -BinaryPathName "D:\CoolProgram\Release\TheProgram.exe"
Or run it in command prompt (CMD) like this, also like administrator:
sc.exe create "My Cool Program" binPath= "D:\CoolProgram\Release\TheProgram.exe"
If you need to delete your service use:
sc.exe delete "My Cool Program"

If you got this error: windows could not start the service on local computer error 1053. Then there could be a various kind of reasons for the problem. I have listed my solution to this problem below after trying basically everything.
Error from Event Viewer: <myprogram> service failed to start due to the following error:
The service did not respond to the start or control request in a timely fashion.
Check if these solve your issue:
- Try install your service and start it with NSSM – the Non-Sucking Service Manager. This was the solution that worked for me. You download the program and open up CMD in that folder where you have NSSM unzipped, and then run:
nssm install
Then choose your file path and give it a name. Then start the service through the command:
nssm start "my name of service"
Other things you can check:
- Check .NET version so that it is correct under your web/app configurations with what you are running on the server (this line)
<startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2"/> </startup>
- Check so that you don’t publish your program with Debug mode, you should publish it with Release mode.
- You can also try increasing the time that it takes before a Service stops trying to start: see this website for instructions. Probably not the issue though but who knows.
- Check that you have all the assemblies/dependencies for your project.
- You can try run everything in a try and catch block to catch the error (see from stackoverflow) (which did nothing for me):
using System;
using System.Diagnostics;
using System.ServiceProcess;
namespace WindowsService
{
static class Program
{
static void Main()
{
try
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new Service1()
};
ServiceBase.Run(ServicesToRun);
}
catch (Exception ex)
{
EventLog.WriteEntry("Application", ex.ToString(), EventLogEntryType.Error);
}
}
}
}