How to run a EXE as a service

Windows OS Specific Topics
Post Reply
User avatar
Neo
Site Admin
Site Admin
Posts: 2642
Joined: Wed Jul 15, 2009 2:07 am
Location: Colombo

How to run a EXE as a service

Post by Neo » Wed Dec 09, 2009 2:32 am

What is a Service?
A Windows Service is automatically started when your system boots. There is no need to logon to the system. Services also are not affected by people logging off. Services automatically recover from program crashes and Standby and Hibernation modes. Windows 9x/ME do not have a Service facility. Installing software as a Service requires Administrator permissions.

What are the options for running a program as a Service?
  1. sc.exe
    This is Microsoft software and is installed by default on XP and 2003. It is probably the best and easiest method but it won't work if the target executable was not programmed to run as a Service. This rules it out for what many people are trying to do since most programs that are designed ro run as a Service have that option included somewhere in the application. sc.exe is useful for the Unattended crowd, though.

    Code: Select all

    sc create YourServiceName binPath= "c:\Program Files\directory\appname.exe"
    Two other useful options, with the same syntax as above, are:

    Code: Select all

    type= <own|share|interact|kernel|filesys|rec>
          (default = own)
    start= <boot|system|auto|demand|disabled>
          (default = demand)
    You can use these commands for more details:

    Code: Select all

    sc /?
    sc create /?
  2. instsrv.exe and srvany.exe
    This is Microsoft software but was published as part of the Resource Kits. You can download the files here.

    Instrsrv.exe installs the Service but srvany.exe is the real gem here as it is a wrapper that allows any software to be run as a Service. This method worked great for me but does require manual registry edits.

    Here is a quick summary of the steps involved.
    1. Unpack the fileset to a folder of your choice. srvany.exe needs to remain on your system for this method to work, so put it somewhere like Program files where you won't mind leaving it around. I use C:\Program Files\services in this example.
    2. Install the Service with a command like this:

      Code: Select all

      C:\Program Files\services\Instsrv.exe YourServiceName C:\Program Files\services\Srvany.exe
    3. Using a registry editor, find this key:

      Code: Select all

      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\YourServiceName
    4. Add a new sub-key called Parameters.
    5. In the Parameters key, create a new string value named Application.
    6. Set the value data of Application to the full path of the executable file that you want the service to launch. For example, C:\WINNT\notepad.exe.
    7. Using the Services console, find your new service and make any necessary property edits. This dialog will allow you to set the startup type, logon method, and program failure options.
    One problem I ran into with this method was task tray entries. Some programs won't work if their task tray entry fails. If the software you want to run wants to put an icon in the task tray you can try enabling "Allow service to interact with the desktop" on the "Log On" tab of the Service properties. If that doesn't work you could also try disabling the task tray entry for the program.

  3. Launcher Service
    It is free and open source and looks very flexible and useful. You can find it here. This program has several unique features:
    • Start or stop a program based on network connectivity
    • External program can be run before or after execution
    • Delete *.tmp and *.pid files from the program's startup folder before execution
  4. WinServ
    WinServ is a utility that can create an NT service that runs any application. When the application exits, the service becomes stopped.
    I did not try this program but included it here since it is free, open source and looks useful.

  5. XYNTSERVICE
    Open source solution that can be found here. Highly recommended.
Post Reply

Return to “Windows”