Nov 15, 2011 #MFC

Service Control – Create, Start, Stop, Query or Delete any Windows SERVICE. The command options for SC are case sensitive.

SC [\server] [command] [service_name] [Options]

server : The machine where the service is running

service_name : The KeyName of the service, this is often but not always
the same as the DisplayName shown in Control Panel, Services.
You can get the KeyName by running:
SC GetKeyName

query [qryOpt] Show status
queryEx [qryOpt] Show extended info – pid, flags
GetDisplayName Show the DisplayName
GetKeyName Show the ServiceKeyName
EnumDepend Show Dependencies
qc Show config – dependencies, full path etc
start START a service.
stop STOP a service
pause PAUSE a service.
continue CONTINUE a service.
create Create a service. (add it to the registry)
config permanently change the service configuration
delete Delete a service (from the registry)
control Send a control to a service
interrogate Send an INTERROGATE control request to a service
Qdescription Query the description of a service
description Change the description of a service
Qfailure Query the actions taken by a service upon failure
failure Change the actions taken by a service upon failure
sdShow Display a service&qt;&qt;s security descriptor using SDDL
SdSet Sets a service&qt;&qt;s security descriptor using SDDL

type= driver|service|all
Query specific types of service
state= active|inactive|all
Query services in a particular state only
bufsize= bytes
ri= resume_index_number (default=0)
group= groupname
Query services in a particular group

Misc commands that don&qt;&qt;t require a service name:
SC QueryLock Query the LockStatus for the ServiceManager Database.
this will show if a service request is running
SC Lock Lock the Service Database
SC BOOT Values are {ok | bad} Indicates whether to save
the last restart configuration as the &qt;last-known-good&qt;
restart configuration
The CREATE and CONFIG commands allow additional options to be set
see the build-in help: &qt;&qt;SC create&qt;&qt; and &qt;&qt;SC config&qt;&qt;Note the qryOpt options above are case sensitive – they must be entered in lower case, also the position of spaces and = must be exactly as shown.

The SC command duplicates some aspects of the NET command but adds the ability to create a service.
SC query will display if a service is running, giving output like this:

SERVICE_NAME : messenger
WIN32_EXIT_CODE : 0 (0x0)
WAIT_HINT : 0x0To retrieve specific information from SC&qt;&qt;s output, pipe into FIND or FindStr

SC query messenger | FIND "STATE"
In the statement above the FIND command will set the ERRORLEVEL as follows

ERRORLEVEL 0 = Running
ERRORLEVEL 1 = Stopped or Paused

The NET START command can be used in a similar way to check if a service is running:

NET START | FIND "Service name" > nul
IF errorlevel 1 GOTO :s_not_runningThe service control manager will normally wait up to 30 seconds to allow a service to start – you can modify this time (30,000 milliseconds) in the registry

ServicesPipeTimeout (REG_DWORD)

Some options only take effect at the point when the service is started e.g. the SC config command allows the executable of a service to be changed. When the service next starts up it will run the new executable. Config changes requires the current user to have “permission to configure the service”.


SC GetKeyName "task scheduler"
SC GetDisplayName schedule
SC start schedule
SC QUERY schedule
SC QUERY type= driver
SC QUERY state= all |findstr "DISPLAY_NAME STATE" >svc_installed.txt
SC \myServer CONFIG myService obj= LocalSystem password= mypassword
SC CONFIG MyService binPath=c:myprogram.exe obj=".LocalSystem" password=&qt; Watch out for extra spaces:
SC QUERY state= all Works
SC QUERY sTate =all Fails!