Dienste programmieren mit .NET

Mit der Win32-API gestaltete sich das Programmieren von Windows-Diensten mühsam und fehleranfällig. Wie Sie mit dem .NET-Framework jetzt schnell und einfach Ihren eigenen Windows-Dienst erstellen, zeigt dieser Beitrag.

Die so genannten Windows-Dienste gibt es schon seit Windows NT 3.1 und natürlich auch in 2000, XP und 2003. Diese Dienste bieten den Vorteil, dass sie auch laufen, ohne dass eine Person am Rechner angemeldet ist: Der Rechner bietet dann eben einen Dienst an, den andere Rechner nutzen können.

Dienste schaffen aber auch Probleme -sie sind relativ kompliziert zu programmieren, zu debuggen und zu installieren. .NET und das Visual Studio machen die Entwicklung von Diensten jedoch erheblich einfacher, als das mit der Win32-API der Fall ist. Dennoch gibt es immer noch genügend Fallstricke.

Bevor es an die Entwicklung des ersten eigenen Dienstes geht, sind einige Hintergrundinformationen unabdingbar. Ein Dienst ist ein Programm, das beim Booten des Rechners automatisch gestartet werden kann und so lange läuft, wie der Rechner eingeschaltet ist. Dazu muss kein Anwender angemeldet sein, da der Dienst in einem speziellen Windows-Kontext läuft. Hier werden entweder die Anmeldedaten eines Benutzer-Accounts verwendet oder der lokale System-Account.

Das hat verschiedene Konsequenzen - unter anderem die, dass ein Dienst nicht einfach von einem Anwender gestartet und benutzt werden kann. Vielmehr unterliegt die Kontrolle der Dienste dem Service Control Manager, einer zentralen Windows-Komponente. Daher muss ein Dienstprogramm dem Service Control Manager bekannt gemacht werden. Für Dienste, die mit der .NET-Klassenbibliothek entwickelt wurden, gibt es dazu das spezielle Werkzeug InstallUtil.exe.

Die kompletten Quelltexte unserer Beispielprogramme können Premium-Kunden über die "Links zum Beitrag" kostenlos herunterladen.