Windows “SC” command – Handling Windows Services the Proper Way.

Instead of always deleting whole registry keys to “clean up” Oracle software, there is also a normal statement on the command prompt to do this more effectively and in a more proper way. Only…I always forget what the statement was, so that’s why I post this now on this site…

😎


C:\> ver

Microsoft Windows XP [Version 5.1.2600]

C:\> sc

DESCRIPTION:
        SC is a command line program used for communicating with the
        NT Service Controller and services.

USAGE:

        sc {server} [command] [service name] {option1} {option2}...

        The option {server} has 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 (persistant).
          description-----Changes the description of a service.
          failure---------Changes the actions taken by a service upon failure.
          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.
          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.
          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

EXAMPLE:
        sc start MyService

Would you like to see help for the QUERY and QUERYEX commands? [ y | n ]: y

QUERY and QUERYEX OPTIONS :

        If the query command is followed by a service name, the status
        for that service is returned.  Further options do not apply in
        this case.  If the query command is followed by nothing or one of
        the options listed below, the services are enumerated.
    type=    Type of services to enumerate (driver, service, all)
             (default = service)
    state=   State of services to enumerate (inactive, all)
             (default = active)
    bufsize= The size (in bytes) of the enumeration buffer
             (default = 4096)
    ri=      The resume index number at which to begin the enumeration
             (default = 0)
    group=   Service group to enumerate
             (default = all groups)

SYNTAX EXAMPLES

sc query                - Enumerates status for active services & drivers
sc query messenger      - Displays status for the messenger service
sc queryex messenger    - Displays extended status for the messenger service
sc query type= driver   - Enumerates only active drivers
sc query type= service  - Enumerates only Win32 services
sc query state= all     - Enumerates all services & drivers
sc query bufsize= 50    - Enumerates with a 50 byte buffer.
sc query ri= 14         - Enumerates with resume index = 14
sc queryex group= ""    - Enumerates active services not in a group
sc query type= service type= interact - Enumerates all interactive services
sc query type= driver group= NDIS     - Enumerates all NDIS drivers


.

So deleting an Oracle Listener Windows Service would be something like the following statement in a Windows CMD window


C:\> sc query OracleOraDb11g_home1TNSListener

SERVICE_NAME: OracleOraDb11g_home1TNSListener
        TYPE               : 10  WIN32_OWN_PROCESS
        STATE              : 4  RUNNING
                                (STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0

C:\> sc delete OracleOraDb11g_home1TNSListener

.
Marco Gralike Written by:

8 Comments

  1. October 16

    Now I didn’t know that and it looks really useful so thanks a lot!

  2. Niall Litchfield
    October 17

    It is indeed extremely useful – If you are on Windows 2000 or earlier then the command is not built in but available on the windows resource kit – which I think costs money. It is built in to xp and 2003. You can use the XP version to remotely delete services (now that should scare you) if you have wmi administrative rights on the remote machine.

    I also always forget that the command takes the name of the service and not the display name of the service as an argument.

  3. October 17

    If you have administrative rights (as most Oracle database installations have…) then everything is possible local and remote (as far as you know how).

    I hope, but I haven’t really worked with Vista, that this will change.

    Nevertheless regarding privileges, Windows is a bitch. Have you EVER seen a proper (security wise) Oracle installation manual…

    It is still on my to do list; writing a correct security wise installation manual for Windows, but I am also reluctant to do this, because I think this is Oracle responsibility (since a decade…) and it is a lot of groundwork. The advantage I have is that I worked with Oracle for Windows, since Windows NT 3.1 / 3.5 (a Windows 3.11 OS in disguise).

  4. Barry Allard
    December 12

    List all services and drivers in any state :

    sc queryex state= all type= all

    List all services and drivers in any state (good for forensics):

    sc queryex state= all type= all | find “_NAME”

    Separate out shared services:

    http://is.gd/5kAWJ

    Find memory usage of services:

    http://is.gd/5kAWJ

  5. Dalila
    March 23

    I came upon your website because I was searching for “how to remove Oracle services” in Win XP. I used the OUInstaller, but it did not remove from Window services. I also did the registry but partially.
    The sc cmd help.
    So thank you for the help!

    Great!!

    Dalila

  6. March 23

    Your welcome 😉

    Every little bit of information exchange helps in our line of work. As said, glad of being of help.

  7. vivek
    December 28

    I wanted to start/stop any service of a remote machine.
    Through a remote machine. So I am using a command
    SC \\server stop “Apache Tomcat Tomcat6”

    output
    SC] OpenSCManager FAILED 5:
    Access is denied.U:/>

    Do you have any idea have to excute this command using admin access?

    • December 28

      Yep. You need the domain privileges to do that or local privileges. What you could do to authorize yourself is to connect to a C$ share on that server and then re-execute the statement.

Comments are closed.