Een Windows-service handmatig maken en installeren

Windows-services zijn, voor zover ik heb gezien, soms nogal vreemd. Ze draaien op de achtergrond, een beetje zoals Mr. Invisible, en starten meestal automatisch wanneer Windows opstart. Maar het maken van een nieuwe service vanuit een uitvoerbaar bestand is niet altijd even eenvoudig, vooral als het niet is ontworpen om als service te functioneren. Als je hebt geprobeerd je app als service uit te voeren en fouten bent tegengekomen – zoals de klassieke fout 1053 – kan deze handleiding je helpen om dit te omzeilen. We bespreken het gebruik van ingebouwde tools zoals sc.exe en New-Service, maar ook hoe je deze kunt laten samenwerken met externe tools zoals NSSM als de app eigenwijs of niet zo gebruiksvriendelijk is. Het is misschien wat omslachtig, maar het is mogelijk. Het is immers nogal een gedoe om een ​​binair bestand dat niet als service is ontworpen, soepel als service te laten draaien, maar met de juiste trucs kun je je app op de achtergrond laten draaien zonder dat je er de hele dag toezicht op hoeft te houden.

Windows-services maken of beheren

Methode 1: sc.exe gebruiken voor het snel aanmaken van services

Dit is de ideale manier om snel en eenvoudig services te creëren met commandoregelbesturing. Het is handig wanneer je een service wilt starten vanuit een eenvoudig uitvoerbaar bestand met een paar argumenten, en je enige controle wilt hebben over het opstarttype. Dit werkt goed met apps die al ontworpen zijn als service, maar soms krijg je fouten, vooral als de app niet is gebouwd met servicegedrag in gedachten.

Hier is een typisch commando dat u mogelijk uitvoert in de opdrachtprompt (als beheerder):

sc create CorpCollectorService binPath= "C:\Program Files (x86)\CORP\collector.exe -i C:\tools\config.xml" start= auto DisplayName= "CORP Log Collector Service"

Enkele aandachtspunten: zorg ervoor dat er een spatie achter het gelijkheidsteken staat, want Windows is daar soms een beetje eigenwijs in. Als alles goed gaat na het uitvoeren van dit commando, zou je een bevestigingsbericht moeten zien:

[SC] CreateService SUCCESS

Bekijk nu het paneel Services ( services.msc) en klik F5op Vernieuwen. Je zou de nieuwe service daar moeten zien staan, en je kunt hem daar starten, stoppen of het opstartgedrag ervan wijzigen.

Let op: als uw app niet is ontworpen om als service te draaien, kan dit stilzwijgend mislukken of fouten geven bij het opstarten. Soms raakt Windows van slag als uw app besturingssignalen niet correct verwerkt of niet snel genoeg reageert, wat foutcode 1053 kan veroorzaken. In dat geval heeft u mogelijk extra hulp of een andere aanpak nodig.

Methode 2: Een service maken met PowerShell’s New-Service.

Dit is een iets modernere manier, vooral als je scripts gebruikt of meer controle wilt. Met PowerShell kun je details zoals een beschrijving of opstarttype in één keer specificeren. Maar nogmaals, het is alleen echt betrouwbaar als de app is geschreven om als service te draaien.

Hier is een eenvoudig voorbeeld:

New-Service -Name CorpCollectorService -BinaryPathName "C:\Program Files (x86)\CORP\collector.exe -i C:\tools\config.xml" -DisplayName "my test service" -Description "CORP Log Collector Service" -StartupType "Automatic"

Als u de service onder een specifiek gebruikersaccount moet uitvoeren (soms is dit nodig vanwege machtigingen), kunt u zoiets doen als:

$username = "user123" $password = "PaSSw0rd1" $securepassword = ConvertTo-SecureString $password -AsPlainText -Force $cred = New-Object System. Management. Automation. PSCredential ($username, $securepassword) New-Service...-Credential $cred

Let op: PowerShell met beheerdersrechten is vereist. Daarnaast is het raadzaam om ervoor te zorgen dat het account de juiste machtigingen heeft en dat het wachtwoord veilig wordt beheerd. In de praktijk melden sommige gebruikers dat de service zelfs met geldige inloggegevens niet start als de app er niet voor is ontworpen.

Optie: Een service verwijderen wanneer deze niet langer nodig is

Soms is het verwijderen van de service de schoonste manier om problemen op te lossen of op te ruimen. Voer hiervoor het volgende commando uit:

sc delete service_name

Vervang service_name door de daadwerkelijke naam van uw service. Wees voorzichtig: verwijder de verkeerde services en u kunt belangrijke informatie kwijtraken.

Apps omzeilen die niet bedoeld zijn als diensten (een onorthodoxe maar nuttige tip)

Hier wordt het wat ingewikkelder. Niet alle apps kunnen de besturingssignalen van SCM (Service Control Manager) correct verwerken of reageren op start/stop-commando’s, wat kan leiden tot fouten zoals “Fout 1053”.Als je app niet van nature als service is ontworpen, is er een handige tool genaamd NSSM ( Non-Sucking Service Manager ) die ervoor zorgt dat elk uitvoerbaar bestand soepel op de achtergrond draait. Het fungeert als een tussenpersoon: het voert je app als service uit, bewaakt deze en herstart hem zelfs als hij vastloopt.

Het installatieproces is vrij eenvoudig. Installeer eerst NSSM via WinGet :

winget install --id NSSM. NSSM -e

Om vervolgens een service van uw binaire bestand te maken, voert u het volgende commando uit:

nssm install testservice "C:\Tools\collector.exe"

Op deze manier neemt NSSM alle lastige zaken voor zijn rekening. Het heeft ook een grafische gebruikersinterface (GUI) voor configuratie, zodat u opstartparameters, omgevingsvariabelen en andere instellingen kunt aanpassen zonder de commandoregel te hoeven gebruiken. Als u de configuratie of het binaire bestand later wilt bijwerken, voert u gewoon het volgende commando uit:

nssm edit testservice

In sommige configuraties werken de officiële Microsoft-tools mogelijk niet goed met apps die de servicemodus niet standaard ondersteunen. NSSM is dan de oplossing. Bovendien kan het vastgelopen apps automatisch herstarten, wat erg handig is.

En ja, het uitvoeren van willekeurige apps als een service is niet altijd een gegarandeerd succes, vooral niet als het grafische of interactieve apps zijn. Maar NSSM maakt het hele proces een stuk betrouwbaarder, met name voor achtergrondprocessen of scripts die actief moeten blijven.

Eerlijk gezegd is het soms best een rommeltje, maar met deze tips lukt het meestal wel zonder al te veel gedoe. Veel succes met het transformeren van je apps in betrouwbare achtergrondprocessen!