Home

SC, Service Control
zur Verwaltung der Systemdienste per Kommandozeile
(Windows® XP und VISTA)


Auswahlseite
Dies bei XP und VISTA mitgelieferte Kommandozeilenprogramm wird häufig übersehen. Es ermöglicht die Verwaltung der Systemdienste.

Zur Dokumentation (wie ist meine Rechner konfiguriert ?) bietet sich ein Aufruf wie
sc query >d:\temp\dienste.txt
an. Die ermitteltet Konfiguration wird dann in die hinter dem >-Zeichen genannte Datei geschrieben.
Weitere Hilfe zu Befehlen wird nach Eingabe von sc [Befehl] angezeigt. Für genauere Informationen sei auf die bei Windows® XP mitgelieferte Dokumentation in der dortigen „Hilfe” verwiesen.

Anwendungsbeispiel

Kommandos für das Dienstverwaltungsprogramm SC
query Fragt den Status eines Dienstes ab oder listet den Status für Arten von Diensten.

Die vollständige Aufrufsyntax ist:
sc [ServerName] query [Dienstname] [type= {driver|service|all}]
[type= {own|share|interact|kernel|filesys|rec|adapt}] [state= {active|inactive|all}]
[bufsize= BufferSize] [ri= ResumeIndex] [group= GroupName]
Hinter den Gleichheitszeichen muss jeweils ein Zwischenraumzeichen angegeben werden!

Die Option [Servername] hat das Format „\ServerName”. Diese Option wird nicht verwendet, wenn derjenige PC gemeint ist, auf dem SC ausgeführt wird.

queryex Fragt den erweiterten Status eines Dienstes oder zählt den Status für von Diensten auf.
start Startet einen Dienst
pause Sendet eine PAUSE-Steuerungsanfrage an einen Dienst.
interrogate Sendet eine INTERROGATE-Steuerungsanfrage an einen Dienst.
continue Sendet eine CONTINUE-Steuerungsanfrage an einen Dienst.
stop Sendet eine STOP-Steuerungsanfrage an einen Dienst.
config Ändert die Konfiguration eines Dienstes (dauerhaft).
description Ändert die textliche Beschreibung eines Dienstes.
failure Ändert die Aktionen beim Fehlschlagen eines Dienstes.
failureflag Ändert das Fehleraktionsflag eines Dienstes.
sidtype Ändert den SID-Typ eines Dienstes.
privs Ändert die erforderlichen Berechtigungen eines Dienstes.
qc Fragt die Konfigurationsinformationen eines Dienstes ab.
qdescription Fragt die Beschreibung eines Dienstes ab.
qfailure Fragt die Aktionen ab, die bei einem Dienstfehler ausgeführt werden sollen.
qfailureflag Fragt das Fehleraktionsflag eines Dienstes ab.
qsidtype Fragt den SID-Typ eines Dienstes ab.
qprivs Fragt die erforderlichen Rechte eines Dienstes ab.
delete Löscht einen Dienst (aus der Registrierung).
create Erstellt einen Dienst. d.h. trägt ihn in die Registrierung ein).
control Sendet eine Steuerung an einen Dienst.
sdshow Zeigt die Sicherheitsbeschreibung eines Dienstes an.
sdset Legt die Sicherheitsbeschreibung eines Dienstes fest.
showsid Zeigt die Dienst-SID an, passend zu einem zufälligen Namen.
GetDisplayName Ruft den Displaynamen eines Dienstes ab.
GetKeyName Ruft den Servicekeynamen für einen Dienst ab.
EnumDepend Listet die Dienstabhängigkeiten auf.
Die folgenden Befehle benötigen keinen Dienstnamen:
boot ok
boot bad
Damit wird angegeben, ob der letzte Neustart als die letzte als funktionierend bekannte Konfiguration gespeichert werden soll.
Lock Sperrt die Dienstdatenbank.
QueryLock Fragt den LockStatus der SCManager-Datenbank ab.
Aufrufbeispiele
sc query                - Listet den Status aktiver Dienste und Treiber
sc query messenger      - Zeigt den Status des Messenger-Dienstes
sc queryex messenger    - Zeigt den erweiterten Status des Messenger-Dienstes
sc query type= driver   - Listet nur aktive Treiber
sc query type= service  - Listet nur Win32-Treiber
sc query state= all     - Listet alle Dienste und Treiber
sc query bufsize= 50    - Listet mit einem 50 Byte-Puffer auf
sc query ri= 14         - Listet mit Index zum Fortsetzen = 14
sc queryex group= \"\"  - Listet aktive Dienste die nicht einer Gruppe angehören

sc query type= service type=interact  - Listet alle interaktiven Dienste
sc query type= driver group= ndis     - Listet alle NDIS-Treiber
Der Parameter type= muss in einigen Fällen zweimal angegeben werden. Mit dem ersten Eintrag type= parameter wird die Art des Services (services, drivers, all) ausgewählt. Der zweite Eintrag von type= parameter gibt eine weitere Auswahl an.

Der Zwischenraum hinter dem Gleichheitszeichen ist erforderlich!

Anwendungsbeispiel

Nachtrag August 2009: Das Beispiel bezieht sich auf eine ältere Version des genannten Virenschutzprogrammes.

Virenschutzprogramme sollten häufig aktualisiert werden. Bei dem für Privatanwender als Freeware erhältlichen Virenschutzprogramm „Antivir” ist ein Update nur möglich, wenn auch der zum Lieferumfang gehörige sogenannte Scheduler als Service läuft.

Da ich den Scheduler nicht benötige, habe ich seinen Start in der Systemsteuerung von „automatisch” auf „manuell” umgestellt.

Um vor einem Update von Antivir nicht per Maus in der Systemsteuerung herumstochern zu müssen, habe ich eine kleine Batch-Datei geschrieben. Sie zeigt den Status beider Service an und ermöglicht das nachträgliche Starten dieser Service nach Auswahl über Tastatur. Für die Tastaturauswahl wird ein Hilfsprogramm „batc” verwendet. Mit dem verwendeten Parameter „a” funktioniert es so, wie das Programm  i FRAGE. Der Aufruf „batc w” wartet auf eine Tastatureingabe, bevor die Batch-Datei beendet wird. Dadurch ist es besser möglich, die Batch-Datei unmittelbar von der Windows-Oberfläche aus zu bedienen.

Batch-Datei

echo off
title AntivirService Starten oder Stoppen
echo jetziger Status des AntiVirServices und des AntiVirSchedulers
sc query AntiVirService
sc query AntiVirScheduler
batc a0=Nichts machen / 1=AntiVir starten / 2=Scheduler starten ?:,012
if errorlevel=3 goto start2
if errorlevel=2 goto start1
echo es soll nichts gemacht werden
goto raus
:start1
sc start AntiVirService
goto raus
:start2
sc start AntiVirScheduler
:raus
batc w

Ablaufbeispiel (es sind bereits beide Services aktiv)

echo off
jetziger Status des AntiVirServices und des AntiVirSchedulers

SERVICE_NAME: AntiVirService
      TYPE              : 10  WIN32_OWN_PROCESS
      STATE             : 4  RUNNING
                            (NOT_STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
      WIN32_EXIT_CODE   : 0  (0x0)
      SERVICE_EXIT_CODE : 0  (0x0)
      CHECKPOINT        : 0x0
      WAIT_HINT         : 0x0

SERVICE_NAME: AntiVirScheduler
      TYPE              : 10  WIN32_OWN_PROCESS
      STATE             : 4  RUNNING
                            (NOT_STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
      WIN32_EXIT_CODE   : 0  (0x0)
      SERVICE_EXIT_CODE : 0  (0x0)
      CHECKPOINT        : 0x0
      WAIT_HINT         : 0x0
0=Nichts machen / 1=AntiVir starten / 2=Scheduler starten ?:>
es soll nichts gemacht werden
->

Hinweis: Wenn man den Service starten möchte, sollte man sich als Administrator angemeldet haben. Siehe im folgenden Ablaufbeispiel den Fehlerhinweis!
D:\dos\nu>echo off
jetziger Status des AntiVirServices und des AntiVirSchedulers

SERVICE_NAME: AntiVirService
      TYPE              : 10  WIN32_OWN_PROCESS
      STATE             : 4  RUNNING
                            (NOT_STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
      WIN32_EXIT_CODE   : 0  (0x0)
      SERVICE_EXIT_CODE : 0  (0x0)
      CHECKPOINT        : 0x0
      WAIT_HINT         : 0x0

SERVICE_NAME: AntiVirScheduler
      TYPE              : 10  WIN32_OWN_PROCESS
      STATE             : 1  STOPPED
      WIN32_EXIT_CODE   : 1077  (0x435)
      SERVICE_EXIT_CODE : 0  (0x0)
      CHECKPOINT        : 0x0
      WAIT_HINT         : 0x0
0=Nichts machen / 1=AntiVir starten / 2=Scheduler starten ?:>
[SC] StartService: OpenService FEHLER 5:

Zugriff verweigert

->

Seite zuletzt geändert am 24.8.2009