Archive for 24th February 2011

Win32 EXE to service in Windows Server 2008

We had a server meltdown happen here earlier this week, and as part of the collateral damage, an automated order processing application that has been running since 2004 has been off-line. This application was written in VB6 with a minimal user interface, and as such, I have always remoted into the server, started the program up on the server and left it open, and then just closed my remote desktop application, which left the session open and running.

We wanted to change this to make it a bit more reliable, which means Windows service. Unfortunately, the application does not have the correct hooks in it that make it be able to be seen as a service. (I could create a service with the EXE name as the target, and the EXE would run when I started up the service, but it would soon crash as service manager could not find something it was looking for.)

After a little bit of digging, I found some suggestions on using the srvany.exe application as a shell to launch my application, and I must say it seems to work marvelously. Here is the link where I found the solution:

Application as a Service “srvany.exe” in Windows Server 2008

Here are the important steps from the article above (in case it relocates or disappears):

  1. At the time of this posting, there is no Windows Server 2008 Resource Kit Tools, so get the “srvany.exe ” from the “Windows Server 2003 Resource Kit Tools ” and copy it to a suitable location on your Win2008 server (e.g. C:\Windows\System32\ ).
  2. Use “sc ” to create a new service that launches “srvany ” (e.g. sc create MyService binPath= C:\Windows\System32\srvany.exe DisplayName= “My Custom Service” )
  3. Using RegEdit : create a “Parameters ” key for your service (e.g. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyService\Parameters\ )
  4. Using RegEdit : within the newly created “Parameters ” key , create a string value called “Application ” and enter the full path to the application you are wanting to run as a service. (No quotes required.)

In the article linked above, keep in mind that Parameters is misspelled at the end of item #3, I have corrected it in my item #3 above. Other than that, it seems to be working great.