Malware Removal Information

Ga naar de inhoud

Hoofdmenu

Services

Informatie

Een service is een programma dat op de achtergrond systeemtaken verricht.
Service sleutels worden in het register opgeslagen in een sectie die men ControlSets noemt. Een Controlset kan je vinden in de volgende registersleutel:
HKEY_LOCAL_MACHINE\SYSTEM
Een ControlSet is een volledige kopie van de configuratie die gebruikt wordt om services en andere kritieke bestanden en drivers van Windows te laden.
Er zijn steeds minimum 2 genummerde ControlSets aawezig en 1 CurrentControlSet.
Eén van deze genummerde ControlSets verwijst naar de standaard configuratie van de computer die gebruikt wordt wanneer deze opstart. De andere genummerde Controlset verwijst naar de configuratie die gebruikt wordt wanneer je de computer opstart met de 'Laatst goed werkende configuratie'.
De CurrentControlSet is een exacte kopie van de genummerde ControlSet die gebruikt wordt wanneer we Windows opstarten.
Wanneer je een wijziging doorvoert in de CurrentControlSet zal deze ook automatisch gebeuren in de gemirrorde genummerde ControlSet (en ook omgekeerd).
Meer informatie over de ControlSets vind je ook in de volgende registersleutel:
HKEY_LOCAL_MACHINE\SYSTEM\Select
Deze sleutel bevat de volgende waarden:

  • Current: Deze bevat het nummer van de ControlSet die we momenteel gebruiken en welke gemirrord wordt in CurrentControlSet.

  • Default: Deze bevat het nummer van de ControlSet die door Windows standaard gebruikt wordt bij het opstarten.

  • Failed: Deze sleutel geeft aan welke ControlSet faalde toen de laatste keer opgestart werd. Staat de waarde op 0 dan betekent dit er geen fouten was.

  • LastKnownGoodConfiguration: Deze bevat het nummer van de ControlSet dat Windows gebruikt wanneer je kiest voor 'De laatst goedwerkende configuratie'.


Bij het opstarten worden door Windows alle services geladen waarvan het opstarttype niet op "handmatig" of niet op "Uitgeschakeld" staat.
Alle services die op de computer geïnstalleerd zijn, worden weergegeven in een subsleutel van deze registersleutel:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services.

Opstarten:
Hoe en wanneer een service start, wordt bepaald door de volgende registersleutel:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SERVICENAAM]
"Start"=dword:0000000X

De dword-waarde bij Start, bepaalt het opstarttype van de service en hierbij staat de X voor een getal tussen 0 en 4:

  • Waarde 00000000: een boot-level driver

  • Waarde 00000001: de service wordt geladen onder system

  • Waarde 00000002: de service staat op automatisch

  • Waarde 00000003: de service staat op handmatig

  • Waarde 00000004: de service staat op uitgeschakeld


Wanneer een service automatisch start met windows ("Start"=dword:00000002), dan heb je onder Windows Vista en Windows 7 nog een extra mogelijkheid: Vertraagd starten.
Dit wordt bepaald door de waarde van DelayedAutoStart.
"DelayedAutoStart"=dword:00000001 : de service start vertraagd.
"DelayedAutoStart"=dword:00000000 : de service start niet vertraagd.
Standaard is DelayedAutoStart niet aanwezig.

Services waarvan het opstarttype op "handmatig" staat, worden door het besturingssysteem geladen wanneer dit nodig is. De services die op "Uitgeschakeld" staan, worden niet geladen en kan je starten wanneer je deze nodig hebt.
Bootleveldrivers (waarde 0) worden het vlugst geladen, daarna de system-start drivers (waarde 1) en dan de services met de startwaarde 2.
Wil je het opstarttype van de service wijzigen, dan wijzig je deze best in CurrentControlSet. Dit is immers een mirror van de controlset die gebruikt wordt in de huidige configuratie.

Een service wordt geladen bij het opstarten door gebruik te maken van of svchost.exe of doordat een applicatie rechtstreeks gestart wordt door Windows.
Wordt de service rechtstreeks geladen door het besturingssysteem, dan kan het bijbehorende bestand dat de service doet starten (het uitvoerbaar bestand) gevonden worden bij de waarde Imagepath in de volgende registersleutel:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SERVICENAAM]
"Imagepath"=
Voorbeeld: de service Eventlog
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog
Imagepath heeft als waarde: %SystemRoot%\system32\services.exe
Het uitvoerbare bestand dat Windows gebruikt om de service Eventlog te starten is c:\windows\system32\services.exe

Wanneer een service gestart wordt door svchost.exe, zal deze service in een bepaalde service-groep geplaatst worden. Deze service-groep wordt dan gestart door svchost.exe. Een overzicht van deze groepen en de services die er mee opgestart worden vind je in de volgende registersleutel:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Svchost
In deze registersleutel vind je de verschillende groepen: DComLaunch, LocalServices, netsvcs,…
Elke groep bevat meerdere services die allen gestart worden wanneer de groep geladen wordt door svchost.exe.
De groep LocalService bevat oa de volgende services: Alerter, WebClient, LmHosts, RemoteRegistry, upnphost, SSDPSRV
De groep LocalServices wordt geladen door het commando: svchost.exe -k LocalService.
De groep DComLaunch wordt geladen door het commando: svchost -k DComLaunch
De groep netsvcs wordt geladen door het commando: svchost.exe -k netsvcs

Het commando svchost.exe -k LocalService laadt alle services die zich in de groep LocalService bevinden en dit verschijnt in de processenlijst als één proces svchost.exe. Voor elke groep die geladen wordt door svchost.exe, verschijnt er ook een svchost.exe in de processenlijst. Dit is meteen ook de verklaring waarom svchost.exe meerdere keren kan voorkomen in de processenlijst.
Onder Windows XP / Windows Vista kan je met behulp van het commando tasklist /SVC in een dosbox (start - uitvoeren - cmd) zien welke services er door elke svchost.exe geladen worden.

Wanneer een service gestart wordt met svchost.exe, dan kan je het bestand dat eigenlijk verantwoordelijk is voor de service, vinden in de volgende registersleutel:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\servicename\Parameters]
"ServiceDll"=
De waarde bij ServiceDLL vermeld de naam van het bestand.
Voorbeeld: de service Alerter
Deze wordt gestart door het commando svchost.exe -k LocalService
Je vindt een vermelding in HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Svchost\LocalServices
Het eigenlijke bestand dat verantwoordelijk is voor deze service is SystemRoot%\system32\alrsvc.dll
Dit is de waarde van de sleutel
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Alerter\Parameters]
"ServiceDll"=

Errorcontrol value

Het kan gebeuren dat het laden (starten) van een service of een driver fout loopt. Hoe gereageerd wordt (door de Kernel) hangt af van de ErrorControl waarde van de service.

  • waarde: 00000000 fout wordt genegeerd.

  • waarde: 00000001 er volgt een foutmelding maar het opstarten van de computer loopt verder.

  • waarde: 00000002 er wordt overgeschakeld naar de LastKnownGoodConfiguration. Als deze controlset al geladen is wordt de fout (error) genegeerd.

  • waarde: 00000003 de controlset wordt gemarkeerd als "Failed" en er wordt overgeschakeld naar LastKnownGoodConfiguration. Is de lastknowngood controlset reeds geladen dan krijg je de Blue Screen of Death (BSOD).



Configureren:

Via het service configuratiescherm (Start - uitvoeren - services.msc) kan je ondermeer de status van de service wijzigen (stoppen - starten) en het opstarttype van de service aanpassen.
Windows XP en Windows Vista hebben een tooltje aan boord waarmee je de services kan configuren via de command prompt of via het uitvoeren venster: sc.exe

Servicename is de naam van de service zoals deze voorkomt in het register.
Bestaat de servicenaam uit meerdere woorden met een spatie tussen, dan plaats je deze tussen aanhalingstekens.

  • SC STOP servicenaam : service stoppen

  • SC DELETE servicenaam : service verwijderen uit het register. Dit gebeurt pas na een reboot.

  • SC CONFIG servicenaam start= boot : Zet het opstarttype van de service op waarde 0 ("Start"=dword:00000000)

  • SC CONFIG servicenaam start= system : Zet het opstarttype van de service op waarde 1 ("Start"=dword:00000001)

  • SC CONFIG servicenaam start= auto : Zet het opstarttype van de service op Automatisch. ("Start"=dword:00000002)

  • SC CONFIG servicenaam start= demand : Zet het opstarttype van de service op Handmatig. (Start"=dword:00000003)

  • SC CONFIG servicenaam start= disabled : Zet het opstarttype van de service op Uitgeschakeld. ("Start"=dword:00000004)


Voor Windows Vista en Windows 7 heb je nog:
SC CONFIG servicenaam start= delayed-auto : de service start vertraagd op. ("Start"=dword:00000002 en "DelayedAutoStart"=dword:00000001)

Terug naar de inhoud | Terug naar het hoofdmenu