While the useful NET.EXE utility is great for starting an stopping windows services, it cannot do much beyond that. Enter Microsoft’s SC.EXE – a versatile command-line utility built into Windows that can help you start, stop, restart or configure any Windows Service.
Type SC at a command prompt to see the extensive set of options available:
DESCRIPTION: SC is a command line program used for communicating with the Service Control Manager and services. USAGE: sc <server> [command] [service name] <option1> <option2>... The optionhas the form "\\ServerName" Further help on commands can be obtained by typing: "sc [command]" Commands: query-----------Queries the status for a service, or enumerates the status for types of services. queryex---------Queries the extended status for a service, or enumerates the status for types of services. start-----------Starts a service. pause-----------Sends a PAUSE control request to a service. interrogate-----Sends an INTERROGATE control request to a service. continue--------Sends a CONTINUE control request to a service. stop------------Sends a STOP request to a service. config----------Changes the configuration of a service (persistent). description-----Changes the description of a service. failure---------Changes the actions taken by a service upon failure. failureflag-----Changes the failure actions flag of a service. sidtype---------Changes the service SID type of a service. privs-----------Changes the required privileges of a service. qc--------------Queries the configuration information for a service. qdescription----Queries the description for a service. qfailure--------Queries the actions taken by a service upon failure. qfailureflag----Queries the failure actions flag of a service. qsidtype--------Queries the service SID type of a service. qprivs----------Queries the required privileges of a service. qtriggerinfo----Queries the trigger parameters of a service. qpreferrednode--Queries the preferred NUMA node of a service. delete----------Deletes a service (from the registry). create----------Creates a service. (adds it to the registry). control---------Sends a control to a service. sdshow----------Displays a service's security descriptor. sdset-----------Sets a service's security descriptor. showsid---------Displays the service SID string corresponding to an arbitrary name. triggerinfo-----Configures the trigger parameters of a service. preferrednode---Sets the preferred NUMA node of a service. GetDisplayName--Gets the DisplayName for a service. GetKeyName------Gets the ServiceKeyName for a service. EnumDepend------Enumerates Service Dependencies. The following commands don't require a service name: sc <server> <command> <option> boot------------(ok | bad) Indicates whether the last boot should be saved as the last-known-good boot configuration Lock------------Locks the Service Database QueryLock-------Queries the LockStatus for the SCManager Database
Stopping/Starting a Service with SC
To stop a windows service from an elevated DOS prompt, run:
SC STOP <Service-Name>
where <Service-Name> is the name of the service. Be sure to enclose the name in quotes if it contains a space!
For example, to stop the Print Spooler service (named “Spooler”), run:
SC STOP Spooler
Notice that the SC command will simply make a request for the service to stop and return immediately, before the service has actually stopped. This is evidenced by the STOP_PENDING state (which means that the service is in the process of winding down) returned in the screenshot above. If you plan to use this command in a batch file, you may need to add a sleep/pause after calling SC to give the service some time to respond. (The NET.EXE command, which will wait/block until the service has completely stopped, may be a better choice in this respect.)
Similarly, to start a windows service, use:
SC START <Service-Name>
Again, the request will be made but SC will not wait for the service to complete its startup before returning.
Using SC to Check the Status of a Service
To discover the state of your service, run SC with the QUERYEX option:
SC QUERYEX <Service-Name>
Check on the Spooler service like this:
SC QUERYEX Spooler
If the service is running, SC will return the underlying process identifier (“PID”) which can be used to manipulate the service’s process. This is very handy information when a service is stuck or unresponsive and must be forcibly terminated!
Disabling a Service
The CONFIG option enables you to modify a service’s settings. If you wish to disable a naughty service, preventing anyone from starting it, type:
SC CONFIG <Service-Name> start= disabled
For example, this command disables the infamous Interactive Services Detection Service (named “UI0Detect”):
SC CONFIG UI0Detect start= disabled
Note that the space in between “start=” and “disabled” is required!
How to Create a New Service with SC
SC can be used to create a new service as well. Type “SC CREATE” to see the many settings that can be applied but at a minimum you must specify:
- the name of the service,
- the display name of the service (a more descriptive moniker),
- the full path to the executable hosting the service
For example, the following command creates a service called “MyService” with an executable located in “C:\MyService\MyService.exe”:
SC CREATE MyService binPath= “C:\MyService\MyService.exe” DisplayName= “My very cool service”
Once installed, you can work with the new service as normal in the Services application:
Note that only executables explicitly written to interface with the Windows Service Control Manager should be installed this way. While SC will happily accept a regular, non-service binary, you will receive the fatal Error 1053 when you attempt to start the service. Employ a service wrapper like AlwaysUp in that situation.
Using SC to Delete a Service
The command to remove a service with SC is straightforward:
SC DELETE <Service-Name>
To discard the service named “MyService” that we installed above, use:
SC DELETE MyService
Needless to say, please use this command with caution!. Once a service is deleted it cannot be easily re-instated. Removing the wrong service can render your computer unusable!
SC is the Complete Command Line Utility for Windows Services
So whenever you need to work with a service via a batch file or from a DOS command prompt, look to SC for support. This versatile, essential tool has earned its reputation as the “Swiss Army Knife” for Windows Services!
xcellnt info- thank u.
Excellent, comprehensive article. Thank you.
Hi, great article. I have a Question About use of sc config.
I want to Change the user who runs the Service. This user has a Password which contains a “.
I tried already a lot but did not got it working.
example:
sc config “myservice” obj= mydomain\myuser Password= Pass”word
Hi Reinhard.
Please try escaping the quote with a backslash, like this:
If that doesn’t work, try setting a variable escaped with the caret (^) and using that instead:
And be sure to grant the user account the Logon as a service right.
Does anyone know
How do I fix the “circular service dependency” issue,
What command can I solve this ??
Hi.
Have you checked on the service’s Dependencies tab to see if there is indeed a circular reference? If so, you will have to adjust the dependencies using the SC CONFIG command with the DEPEND option.
Note that some folks have been able to resolve the error by changing the service’s user account. Be sure to try that as well.
Hi,
I cannot get a service to start and stay on. It starts and stops immediately. It needs to run for my accounting program to work. Was fine before a re-install of Windows 10. Worked fine after re-installing the program but after restart of pc will not work.
Sorry to hear that Leon! What service are you having trouble with?
Please try the following: