09.08.2010 12:15 (1 Jahr(e) alt) Visual Basic - Service Programmieren - Tutorial
von Björn Blaschke

Moin Moin,

es ist wieder einmal Zeit für ein neues Tutorial. Diesmal aus dem Bereich .Net Programmierung mit Visual Basic. Ich zeige euch hier, wie ihr einen Service (Windows Dienst) programmiert und installiert.

In Visual Basic

Erstellt ein neues Projekt und gebt diesem einen Namen.
neues Projekt - Windows Dienst in Visual Basic erstellen

Nachdem das neue Projekt erstellt wurde, klickt mit der rechte Maustaste auf den Screen (wenn die Design-Ansicht von Projektinstaller.vb gewählt ist) und klickt daraufhin auf "Installer hinzufügen" in dem sich öffnenden Kontextmenü.

 Windows Dienst Service - Installer hinzufügen

Als nächstes navigiert ihr in die Codeansicht der  Service1.vb und gebt folgenden Code ein:

Imports System.IO
Public Class Service1
    Private ServiceTimer As System.Timers.Timer

    Protected Overrides Sub OnStart(ByVal args() As String)
        ServiceTimer = New System.Timers.Timer()
        ServiceTimer.Interval = 5000 ' 5 Sekunden
        ServiceTimer.Enabled = True
        AddHandler ServiceTimer.Elapsed, AddressOf OnTimerEvent
    End Sub

    Protected Sub OnTimerEvent(ByVal source As Object, _
                               ByVal e As System.Timers.ElapsedEventArgs)
        ' Alle 5 Sekunden die aktuelle Uhrzeit in eine Textdatei schreiben
        Dim fs As FileStream
        Dim sw As StreamWriter
        Dim dateiname As String = "C:\logging.txt"
        Try
            fs = New FileStream(dateiname, FileMode.Append)
            sw = New StreamWriter(fs)
            sw.WriteLine(System.DateTime.Now.ToString("dd.MM.yyyy - H:mm"))
            sw.Close()
        Catch ex As IOException
            MsgBox(ex.Message)
        End Try
    End Sub

    Protected Overrides Sub OnStop()
        ServiceTimer.Enabled = False ' Den Timer deaktivieren
        ServiceTimer = Nothing ' Timer-Referenz aufgeben
    End Sub
    Protected Overrides Sub OnPause()
        ' Den Timer deaktivieren
        ServiceTimer.Enabled = False
    End Sub

    Protected Overrides Sub OnContinue()
        ServiceTimer.Enabled = True ' Den Timer reaktivieren
    End Sub
End Class

Dieser Code erstellt einen Timer, der alle 5 Sekunden in eine Textdatei die aktuelle Uhrzeit einträgt. Dies dient natürlich nur als Beispiel. In diesen Bereichen wo die Textdatei geschrieben wird, könnt ihr natürlich programmieren, was immer ihr wollt.

Beachtet dabei aber, dass sich Dienste in der Entwicklungsumgebung nicht debuggen lassen. Testet daher euren Code in einem Form-Projekt bevor ihr ihn im Service kompiliert.

Zu guter Letzt, könnt Ihr den Service wie gewohnt kompilieren und eine Exe erstellen.

Dienst Installieren

Jetzt ist es an der Zeit, den Dienst in Windows zu intstallieren. Dazu braucht man aber einen Windows User, der die entsprechenden Rechte hat, einen Dienst zu installieren. Um dies sicher zu stellen, geht ihr wie folgt vor.

1. Start -> Ausführen -> secpol.msc eintippen und Enter
2. Unter „Lokale Richtlinien -> Zuweisen von Benutzerrechten -> Als Dienst anmelden“ euren Nutzeraccount hinzufügen (falls noch nicht geschehen)

Windows User-Rechte als Dienst anmelden

Nun könnt ihr den Dienst mit dem berechtigten User installieren. Dazu müsst ihr unter dem Framework-Verzeichnis die InstallUtil.exe mit folgenden Parametern ausführen:

InstallUtil.exe meinService.exe /LogToConsole=true

Bsp:

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe Service1.exe /LogToConsole=true

Bei der darauf folgenden Abfrage nach dem Userkonto den oben mit Berechtigungen versehenen User mit vorangestelltem Punkt und Backslash und dem dazugehörigen Passwort eingeben.

Windows Dienst Service installieren

Als letzten Schritt müssen wir den Dienst noch konfigurieren und starten. Klickt dazu auf Start -> Ausführen und gebt services.msc ein. Sucht in der Liste der Dienste nach eurem Dienst und öffnet mit einem Rechtsklick und "Eigenschaften" das Konfigurationsfenster. Stellt im zweiten Reiter das lokale Konto als ausführendes Konto ein und setzt im ersten Reiter die Startoptionen. Dach könnt ihr über den Startbutton den Dienst starten.

Ich hoffe ich konnte euch einen kleinen Einblick in die Programmierung eines Dienstes liefern. Falls ihr Fragen oder Kritik habt, lasst mir diese bitte zukommen. Hier geht's zum Öffnet internen Link im aktuellen FensterKontaktformular

 

 

Bis demnächst und stay tuned
Björn


Übermittlung Ihrer Stimme...
Bewertungen: 5.0 von 5. 5 Stimme(n).