Windows service


In Windows NT operating systems, a Windows service is a computer program that operates in the background. It is similar in concept to a Unix daemon. A Windows service must conform to the interface rules and protocols of the Service Control Manager, the component responsible for managing Windows services. It is the Services and Controller app, services.exe, that launches all the services and manages their actions, such as start, end, etc.
Windows services can be configured to start when the operating system is started and run in the background as long as Windows is running. Alternatively, they can be started manually or by an event. Windows NT operating systems include numerous services which run in context of three user accounts: System, Network Service and Local Service. These Windows components are often associated with Host Process for Windows Services. Because Windows services operate in the context of their own dedicated user accounts, they can operate when a user is not logged on.
Prior to Windows Vista, services installed as an "interactive service" could interact with Windows desktop and show a graphical user interface. In Windows Vista, however, interactive services are deprecated and may not operate properly, as a result of Windows Service hardening.

Administration

Windows administrators can manage services via:
The Services snap-in, built upon Microsoft Management Console, can connect to the local computer or a remote computer on the network, enabling users to:
The command-line tool to manage Windows services is sc.exe. It is available for all versions of Windows NT. This utility is included with Windows XP and later and also in ReactOS.
The sc command's scope of management is restricted to the local computer. However, starting with Windows Server 2003, not only can sc do all that the Services snap-in does, but it can also install and uninstall services.
The sc command duplicates some features of the net command.
The ReactOS version was developed by Ged Murphy and is licensed under the GPL.
NameDescriptionWindows supportReactOS supportRemarks
queryShow service status
queryexShow extended service info
startStart a service
pausePause a service
interrogate
continueContinue a service
stopStop a service
config
descriptionChange a service description
failure
failureflag
sidtype
privs
managedaccount
qcShow the service config
qdescriptionQuery a service description
qfailure
qfailureflag
qsidtype
qprivs
qtriggerinfo
qpreferrednode
qmanagedaccount
qprotection
quserservice
deleteDelete a service
createCreate a service
control
sdshow
sdset
showsid
triggerinfo
preferrednode
GetDisplayNameShow the service DisplayName
GetKeyNameShow the service ServiceKeyName
EnumDependShow the service Dependencies
boot
Lock
QueryLock

Examples

The following example enumerates the status for active services & drivers.

C:\>sc query

The following example displays the status for the Windows Event log service.

C:\>sc query eventlog

PowerShell

The Microsoft.PowerShell.Management PowerShell module has several cmdlets which can be used to manage Windows services:
Windows also includes components that can do a subset of what the snap-in, Sc.exe and PowerShell do. The net command can start, stop, pause or resume a Windows service. In Windows Vista and later, Windows Task Manager can show a list of installed services and start or stop them. MSConfig can enable or disable Windows services.

Installation

Windows services are installed and removed via *.INF setup scripts by SetupAPI; an installed service can be started immediately following its installation, and a running service can be stopped before its deinstallation.

Development

Writing native services

A Windows service is created using development tools such as Microsoft Visual Studio or Embarcadero Delphi. In order to be a Windows service, a program needs to be written in such a way that it can handle start, stop, and pause messages from the Service Control Manager. Service Control Manager is a component of Windows which is responsible for starting and stopping services.

Wrapping applications as a service

The Windows Resource Kit for Windows NT 3.51, Windows NT 4.0 and Windows 2000 provides tools to control the use and registration of services: SrvAny.exe acts as a service wrapper to handle the interface expected of a service and allow any executable or script to be configured as a service. Sc.exe allows new services to be installed, started, stopped and uninstalled.