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?
- 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.
The syntax for sc.exe is worth noting. This will NOT work:QUOTEsc create YourServiceName binPath="c:\Program Files\directory\appname.exe"But this WILL work (note the space after the =):QUOTEsc create YourServiceName binPath= "c:\Program Files\directory\appname.exe"
Two other useful options, with the same syntax as above, are:CODEtype= <own|share|interact|kernel|filesys|rec>
(default = own)
start= <boot|system|auto|demand|disabled>
(default = demand)
You can use these commands for more details:CODEsc /?CODEsc create /? - instsrv.exe and srvany.exe
This is Microsoft software but was published as part of the Resource Kits. You can download the files here or here. Thanks to tacktech.com for providing the fileset.
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 invloved but you can find more complete instructions at Microsoft's KB page or TackTech's page with great screenshots.- 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.
- Install the Service with a command like this:CODEC:\Program Files\services\Instsrv.exe YourServiceName C:\Program Files\services\Srvany.exe
- Using a registry editor, find this key:CODEHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\YourServiceName
- Add a new sub-key called Parameters.
- In the Parameters key, create a new string value named Application.
- 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.
- 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.
- Launcher Service
Camarade_Tux recommends Launcher Service. It is free and open source and looks very flexible and useful. 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
- WinServQUOTEWinServ 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.
- Non-free options
There are quite a few shareware and payware options. I didn't try any of them but I hear that FireDaemon works well for a lot of people.
- http://support.microsoft.com/kb/251192
- http://support.microsoft.com/kb/q137890
- http://www.tacktech.com/display.cfm?ttid=197
- http://www.msfn.org/board/index.php?showtopic=72799
- http://www.msfn.org/board/index.php?showtopic=40581
- http://www.msfn.org/board/index.php?showtopic=62482
- http://www.codeproject.com/system/serviceskeleton.asp
