Windows-beheerders komen vaak een frustrerende situatie tegen waarbij het stoppen of starten van een service ertoe services.mscleidt dat deze vastloopt in de status ” Stopping” of ” Starting“.De knoppen worden grijs en wat je ook probeert, het lijkt alsof Windows in een soort niemandsland vastloopt. Meestal is dit een symptoom van een deadlock van de service of het bijbehorende proces, of van een situatie waarin de service niet wordt gestart of gestopt. In dat geval net stopkrijg je zelfs bij het uitvoeren van de opdracht via de opdrachtprompt een foutmelding zoals “De service wordt gestart of gestopt. Probeer het later opnieuw”, of loopt het systeem gewoon vast. Het is vreemd, maar het systeem bevindt zich in een soort niemandsland en de gebruikelijke beheermethoden werken niet.
In plaats van de hele server opnieuw op te starten – wat soms de enige optie lijkt – zijn er manieren om een vastgelopen proces of service geforceerd te beëindigen. Niet perfect, maar meestal effectief. Je vindt opties met behulp van opdrachtregelprogramma’s of taskkillPowerShell-scripts, en zelfs meer geavanceerde tools zoals Resource Monitor of Process Explorer. Let wel op: het geforceerd beëindigen van kritieke systeemservices kan soms leiden tot instabiliteit of een blauw scherm (BSoD), dus wees voorzichtig, vooral op productieservers of bij essentiële systeemservices.
Hoe los ik een vastgelopen Windows-service op?
Een vastgelopen service geforceerd beëindigen met Taskkill
Dit is waarschijnlijk de meest eenvoudige methode. Het idee is dat je de proces-ID (PID) van de service vindt en deze handmatig beëindigt. Open eerst een opdrachtprompt met beheerdersrechten — klik met de rechtermuisknop en kies ‘Uitvoeren als beheerder’.
- Zoek de naam van de service in services.msc — bijvoorbeeld wuauserv voor Windows Update. Of u kunt opzoeken welk proces hiervoor verantwoordelijk is door het volgende commando uit te voeren:
sc queryex wuauserv
Hiermee krijg je de PID, bijvoorbeeld 9186. Vervolgens kun je het proces geforceerd beëindigen met:
taskkill /PID 9186 /F
Bij sommige configuraties heb je misschien geluk met het filter:
taskkill /F /FI "SERVICES eq wuauserv"
Dit filtert de lijst met processen zodat alleen het proces achter die service wordt beëindigd. Wees je ervan bewust dat het beëindigen van een systeemproces het systeem kan laten crashen als het cruciaal is. Beëindig daarom geen essentiële services tenzij je weet wat je doet.
Een vastgelopen service geforceerd stoppen met PowerShell
Deze methode is iets overzichtelijker, vooral als je de voorkeur geeft aan scripten. PowerShell kan alle services weergeven die de status “stoppen in behandeling” of “starten in behandeling” hebben:
Get-CimInstance -ClassName win32_service | Where-Object { $_. State -eq 'StopPending' }
Of om te beginnen:
Get-CimInstance -ClassName win32_service | Where-Object { $_. State -eq 'StartPending' }
Om alle processen die aan deze vastgelopen services zijn gekoppeld te beëindigen, kunt u dit script proberen:
$Services = Get-CimInstance -ClassName win32_service -Filter "State='StopPending'" if ($Services) { foreach ($service in $Services) { try { Stop-Process -Id $service. ProcessId -Force -PassThru } catch { Write-Warning "Couldn’t kill process with ID $($service. ProcessId)" } } } else { Write-Output "No services stuck in stop pending." }
Opmerking: Oudere PowerShell-versies ( 1.0, 2.0 ) vereisen Get-WmiObjectin plaats van Get-CimInstance. Wees ook voorzichtig bij het forceren van processen; soms is dit de enige manier, maar het kan instabiliteit veroorzaken.
Analyseer wachtrijen met Resource Monitor.
Als het beëindigen van het proces niet werkt of als je vermoedt dat het proces op iets wacht (zoals een ander proces of een vergrendeling), kan Resource Monitor je helpen. Start het programma met resmon.exe. Ga naar het tabblad CPU, zoek het vastgelopen proces, klik er met de rechtermuisknop op en selecteer Wachtketen analyseren.
Dit laat zien waar het proces op wacht – soms een DLL-vergrendeling of een afhankelijk proces. Als het wacht op een bepaalde vergrendeling svchost.exe, moet u mogelijk analyseren wat de oorzaak van het wachten is. Het beëindigen van het ouderproces of het proces waarop het wacht, kan nodig zijn, maar beëindig niet zomaar willekeurig onschuldige systeemprocessen.
Process Explorer gebruiken voor meer controle
Soms weigeren bepaalde processen, zelfs met beheerdersrechten, te stoppen, vooral processen die onder SYSTEM draaien. Om dit te omzeilen, kunt u Process Explorer gebruiken. Start het programma met SYSTEM-rechten PSEXEC -s -i ProcExp.exe(uit de Sysinternals-suite).Zoek vervolgens het hardnekkige proces, klik er met de rechtermuisknop op, selecteer Eigenschappen en ga naar het tabblad Services. U kunt het proces hier indien nodig tijdelijk volledige beheerrechten geven.
Probeer daarna het proces te beëindigen of de service te stoppen vanuit Process Explorer. Soms is dit de enige manier om een hardnekkig proces te stoppen dat niet op de normale manier wil stoppen. Let op: machtigingen zijn slechts tijdelijk, tenzij u een handleiding voor het instellen van machtigingen volgt. Het is ook goed om te weten dat het verhogen van de ServicesPipeTimeout (via het register) kan helpen voorkomen dat services vastlopen tijdens het starten of stoppen, vooral wanneer ze drukbezet of groot zijn.
Samenvatting
Uiteindelijk is het geforceerd afsluiten van een vastgelopen service niet altijd even fraai, maar in de meeste gevallen werken deze methoden zonder herstarten. Onthoud wel dat het afsluiten van kritieke services kan leiden tot crashes of gegevensverlies als je niet voorzichtig bent. Het is meestal beter om de hoofdoorzaak te achterhalen (zoals afhankelijkheidsproblemen of vastgelopen processen), maar in noodsituaties kunnen deze trucs uitkomst bieden.
Samenvatting
- Gebruik
sc queryexdetaskkillcommando’s om serviceprocessen geforceerd te beëindigen. - Met PowerShell-scripts kunt u vastgelopen services of processen automatiseren.
- Resource Monitor helpt bij het analyseren van wachtketens en afhankelijkheden.
- Process Explorer biedt de mogelijkheid om hardnekkige SYSTEM-processen met meer controle te beëindigen.
- Wees voorzichtig: gedwongen beëindiging van een dienst kan het systeem platleggen als cruciale diensten worden getroffen.
Slotopmerking
Hopelijk helpt een van deze trucjes om die vastgelopen service weer aan de praat te krijgen. Het is niet elegant, maar soms is het de enige echte optie voordat je een toetsenbord pakt en hoopt op een herstart. Ik hoop dat dit helpt.