Etablere et program som en tjeneste (Windows)

Introduksjon

Å lage en tjeneste i Windows er ikke alltid like lett. Fordi man må ta hensyn til start, stopp og kjøre tilstander. Derfor er det enklere å lage en EXE program, deretter konvertere det til en tjeneste (service).

Nedenfor viser jeg to løsninger på dette. Den ene er det som Windows tilbyr, det andre er et spesialprogram som lager servicen for deg. Det er grunn til å vise begge.

Hvorfor?

Man kan spørre seg årsaken til at man vil ha et program kjørt som en tjeneste? Årsaken er enkel. La oss si at den PC eller server går ned, men du ønsker at ditt EXE program automatisk vil starte på nytt. Selv om du ikke har logget deg på.

Et alternativt forslag til å kjøre det som en tjeneste er f.eks. via og lage det en oppgaveplanlegging verktøyet (schedule task). Men det er ikke alltid at dette hjelper. Fordi man kan ha problem når enheten er logget ut, og da er det ikke alltid mulig å starte programmet via schedule task. Eller har rettighetene for å kjøre den uten bistand. Det er derfor bedre løsning å omdefinere EXE programmet som en tjeneste.

NB! Det som man må være obs på er at når EXE programmet kjøres som en tjeneste, vil den kjøres i bakgrunnen.

Eksempel

I dette eksemplet er noe jeg laget for noen år siden. Tryg i Danmark ønsket å ha en samtalelogger som innhentet samtale (CDR) informasjon fra MXONE hussentralen. Programmet sniffer på en bestemt post og ved kontakt med MXONE innheter samtaleinformasjonen og lagres informasjonen i en text fil gruppert per dag.

Lage tjeneste via Windows sin SC kommando

Det man kan bruke er Windows sin egen tjeneste generator SC.

I dette eksemplet lager jeg en tjeneste som startes automatisk med navnet CDRLOGGER der EXE filen CDRReader.exe er plasser i stien C:\CDRLogg\. Gir visningsnavnet CDR Logg Reader.

NB! Du må kjøre kommando shellet (cmd) som administrator.

SC CREATE <navn på tjenesten> binpath=<sti og navn på exe programmet> displayname= <visningsnavnet på tjenesten> depend= <tjenester programmert er avhengig av> start= <oppstartsmodus>

Når man har skapt tjenesten er det bare å starte den ved å kjøre NET START CDRLOGGER

Starter man Services.msc vil man kunne se CDR Logg Reader tjenesten starter.

Av og til vil ikke tjenesten starte. Som vist nedenfor.

For å fjerne tjenesten gjøres dette via kommandoen.

sc delete <navn på tjenesten>

Lage tjeneste via NSSM (Non-Sucking Service Manager)

Det er flere grunnet til dette. En av dem er at koden er noe gammel så SC funksjonen ikke klarer å kjøre tjenesten. Det andre er at hvis man krever å legge inn parameter som i dette tilfellet er ip-port og polling intervall.

Da kan man laste ned et program med navnet NSSM (Non-Sucking Service Manager). Det er både 32 og 64-bit versjoner man kan laste ned.

Bruk den variant som passer for din PC/server.

Parametere finne ved å kjøre NSSM, da vi vil få opp listet opp dem via et vindu.

For å definere en tjeneste gjøres det via kommandoen

NSSM install <navn på tjenesten>

Da vil NSSM service installer starte. Der legger man in programmet og stien man ønsker å omforme til en tjeneste under Application fanen. Er det noen argumenter (parameter) man trenger å legge inn, gjøres dette i Arguments feltet.

For å legge inn detaljer gjøres dette under Details mappen. Der setter man hvordan tjenesten skal starte, normalt er dette satt til Automatisk.

Det er av og til viktig å definere hvem «bruker» skal gis rettighet til å starte tjenesten. Men siden i dette tilfellet trenger man å kjøre den lokalt. Dette defineres i Log on mappen. Det er andre oppsett man kan gjøre. Men la den stå som standard.

Trykker man Install service vil NSSM programmet skape tjenesten.

Trykker OK og vi ser at tjenesten er etablert.

Starter man Services.msc vil man kunne se CDR Logg for MXONE tjenesten startet.

Lister man opp filene vil man se at prosessen er tilkoplet og har etablert samtalelogg innhenting.

Skal man avinstallere NSSM tjenesten må man bruke NSSM ikke SC kommandoen. Det gjøres ganske enkelt ved å skrive:

NSSM remove <navn på tjenesten>

Du vil få valget om man skal gjøre det. Hvis så trykk Yes.

Deretter trykk OK for å lukke NSSM resultat vinduet.

Nå er tjenesten er fjernet.

Enkelt!

Frontfoto av Karl Block (Unsplash)

Vennligst registrer deg for nyheter!

Nå abonnert du på mine nye artikler. Tusen takk!

Det oppstod en feil under din registrering. Vær så snill, prøv på nytt.

TA Engen will use the information you provide on this form to be in touch with you and to provide updates and marketing.