.NET Service Pack 2 (SP2)
Windows Service Pack 2 (SP2) og .NET Framework SP2 introduserte en rekke viktige endringer som påvirket hvordan Windows-tjenester fungerer. Disse endringene inkluderer:
* Introduksjonen av Service Control Manager (SCM) API.
* Muligheten til å spesifisere en tjenestes startmodus som "Automatisk", "Manuell" eller "Deaktivert".
* Tilføyelse av et nytt tjenestestatusflagg, SERVICE_STOPPED_WAIT_HUNG, som indikerer at en tjeneste tar lengre tid enn forventet å stoppe.
* Muligheten til å spesifisere kontoen som en tjeneste skal kjøres under.
* Tilføyelse av nye sikkerhetsfunksjoner, for eksempel muligheten til å begrense tilgangen til en tjenestes konfigurasjon og data.
.NET Service Pack 3 (SP3)
Windows Service Pack 3 (SP3) og .NET Framework SP3 introduserte en rekke mindre endringer som påvirket hvordan Windows-tjenester fungerer. Disse endringene inkluderer:
* Tilføyelse av et nytt tjenestestatusflagg, SERVICE_START_PENDING, som indikerer at en tjeneste tar lengre tid enn forventet å starte.
* Muligheten til å spesifisere rekkefølgen tjenester startes og stoppes i.
* Tillegg av nye loggingsalternativer for Windows-tjenester.
Følgende tabell oppsummerer de viktigste forskjellene mellom Windows Service Pack 2 og 3:
| Funksjon | Service Pack 2 | Service Pack 3 |
|---|---|---|
| Service Control Manager (SCM) API | Introdusert | Ingen endring |
| Tjenestestartmodus | Kan settes til "Automatisk", "Manuell" eller "Deaktivert" | Ingen endring |
| Tjenestestatusflagg | Lagt til SERVICE_STOPPED_WAIT_HUNG-flagg | Lagt til SERVICE_START_PENDING-flagg |
| Tjenestekonto | Kan spesifiseres | Ingen endring |
| Sikkerhetsfunksjoner | Nye sikkerhetsfunksjoner lagt til, for eksempel muligheten til å begrense tilgangen til en tjenestes konfigurasjon og data | Ingen endring |
| Loggalternativer | Begrensede loggingsmuligheter | Nye loggingsalternativer lagt til |
| Tjenesteavhengigheter | Kan spesifiseres | Kan spesifiseres på en mer fleksibel måte |
Arbeid med Windows-tjenester i .NET
For å lage en Windows-tjeneste i .NET, må du opprette en klasse som stammer fra klassen `ServiceBase`. `ServiceBase`-klassen gir den grunnleggende funksjonaliteten som kreves for en Windows-tjeneste, for eksempel muligheten til å starte, stoppe og sette tjenesten på pause.
Følgende kode viser et enkelt eksempel på en Windows-tjeneste:
```
bruker System;
bruker System.ServiceProcess;
navneområde MyWindowsService
{
offentlig klasse MyWindowsService :ServiceBase
{
beskyttet overstyring void OnStart(streng[] args)
{
// TODO:Legg til kode for å starte tjenesten.
}
beskyttet overstyring void OnStop()
{
// TODO:Legg til kode for å stoppe tjenesten.
}
}
}
```
For å installere en Windows-tjeneste må du bruke "InstallUtil"-verktøyet. `InstallUtil`-verktøyet er plassert i .NET Framework SDK. Følgende kommando installerer en Windows-tjeneste:
```
InstallUtil.exe MyWindowsService.exe
```
For å avinstallere en Windows-tjeneste, må du bruke "UninstallUtil"-verktøyet. Følgende kommando avinstallerer en Windows-tjeneste:
```
AvinstallerUtil.exe MyWindowsService.exe
```