vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: System/Windows   |   VB-Versionen: VB2005, VB200830.08.10
Windows Dienst in VB Express .NET einfach erstellen

Anleitung, wie man in Visual Basic .NET einen einfachen Windows Dienst erstellen kann.

Autor:   Patrick BeckerBewertung:     [ Jetzt bewerten ]Views:  30.316 
ohne HomepageSystem:  Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt 

Im beigefügten Download finden Sie eine genaue Anleitung, wie man in VB Express Windows-Dienste einfach erstellen und ausführen kann:

Im Download enthalten sind:

  • Projekt vorlage + Dienst Installer
  • Toolbox elemente zum De/Installieren des Dienstes
  • Genaue Anleitung zum benutzen und bearbeiten der Projekt Vorlage auch für Anfänger geeignet

Windows Dienst in VB Express  .NET einfach erstellen

Weitere Erklärung:
http://msdn.microsoft.com/de-de/library/cc405497.aspx

Quellcode Installer: (Modul mit dem Namen Service1.vb)

Imports System.ComponentModel
Imports System.Configuration.Install
Imports System.ServiceProcess
 
<RunInstaller(True)> Public Class Installer1
  Inherits System.Configuration.Install.Installer
  ' Die Variable ServiceName muss der ServiceName- 
  ' Eigenschaft Ihres Dienstes entsprechen: 
  Private ServiceName As String = "Windows Dienst"
  ' Klartextbeschreibung des Dienstes: 
  Private ServiceDescription = "Windows Dienst"
 
#Region " Component Designer generated code "
  Public Sub New()
    ' Installer-Objekte erzeugen: 
    Dim ProcessInstaller As ServiceProcessInstaller _
      = New ServiceProcessInstaller
    Dim ServiceInstaller As ServiceInstaller _
      = New ServiceInstaller
    ' Der Dienst soll unter dem lokalen System-Account laufen: 
    ProcessInstaller.Account = ServiceAccount.LocalSystem
    ' Der Dienst soll manuell gestartet werden: 
    ServiceInstaller.StartType = ServiceStartMode.Manual
    ' Die ServiceName-Eigenschaft muss der ServiceName- 
    ' Eigenschaft Ihres Dienstes entsprechen: 
    ServiceInstaller.ServiceName = ServiceName
    ' Die Installer-Objekte der Installers-Collection hinzufügen: 
    Installers.Add(ServiceInstaller)
    Installers.Add(ProcessInstaller)
  End Sub
 
  ' Workaround zur Hinterlegung der Dienstbeschreibung 
  Public Overrides Sub Install(ByVal stateSaver As _
    System.Collections.IDictionary)
    ' Der Klasse ServiceInstaller des .NET Frameworks 1.0 fehlt  
    ' eine Eigenschaft, um die Klartextbeschreibung eines  
    ' Dienstes in der Registry zu hinterlegen. Dieser Workaround 
    ' trägt die Klartextbeschreibung nach Installation des 
    ' Dienstes in die Registry unter dem Zweig 
    ' HKEY_LOCAL_MACHINE\System\CurrentControlSet\... 
    ' ...Services\[Dienstname]\ 
    ' als Wert des Schlüssels "Description" ein. 
    ' Ein Löschen bei der Deinstallation des Dienstes ist nicht 
    ' notwendig, da die Deinstallation den gesamten Schlüssel 
    ' [Dienstname] mit allen enthaltenen Werten löscht. 
    Dim RegKey As Microsoft.Win32.RegistryKey
    ' Installation durchführen 
    MyBase.Install(stateSaver)
    ' Danach die Klartextbeschreibung in der Registry ablegen 
    RegKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(
      "System").OpenSubKey( _
      "CurrentControlSet").OpenSubKey( _
      "Services").OpenSubKey( _
      ServiceName, True)
    RegKey.SetValue("Description", ServiceDescription)
    RegKey.Close()
  End Sub
 
  ' Installer overrides dispose to clean up the component list.
  Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
    If disposing Then
      If Not (components Is Nothing) Then
        components.Dispose()
      End If
    End If
    MyBase.Dispose(disposing)
  End Sub
 
  ' Required by the Component Designer
  Private components As System.ComponentModel.IContainer
 
  ' NOTE: The following procedure is required by the Component Designer
  ' It can be modified using the Component Designer.  
  ' Do not modify it using the code editor.
  <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
    components = New System.ComponentModel.Container
  End Sub
#End Region
 
End Class

Quellcode Service: (Modul Name Service1.vb)

Imports System.ServiceProcess
 
Public Class Service1
  Inherits System.ServiceProcess.ServiceBase
 
#Region " Component Designer generated code "
  Public Sub New()
    MyBase.New()
 
    ' This call is required by the Component Designer.
    InitializeComponent()
 
    ' Add any initialization after the InitializeComponent() call
 
  End Sub
 
  ' UserService overrides dispose to clean up the component list.
  Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
    If disposing Then
      If Not (components Is Nothing) Then
        components.Dispose()
      End If
    End If
    MyBase.Dispose(disposing)
  End Sub
 
  ' The main entry point for the process
  <MTAThread()> _
  Shared Sub Main()
    Dim ServicesToRun() As System.ServiceProcess.ServiceBase
 
    ' More than one NT Service may run within the same process. To add
    ' another service to this process, change the following line to
    ' create a second service object. For example,
    '
    '   ServicesToRun = New System.ServiceProcess.ServiceBase () _
    '     {New Service1, New MySecondUserService}
    '
    ServicesToRun = New System.ServiceProcess.ServiceBase () {New Service1}
 
    System.ServiceProcess.ServiceBase.Run(ServicesToRun)
  End Sub
 
  ' Required by the Component Designer
  Private components As System.ComponentModel.IContainer
 
  ' NOTE: The following procedure is required by the Component Designer
  ' It can be modified using the Component Designer.  
  ' Do not modify it using the code editor.
  <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
    components = New System.ComponentModel.Container()
    Me.ServiceName = "Service1"
  End Sub
 
#End Region
 
  Protected Overrides Sub OnStart(ByVal args() As String)
    ' Add code here to start your service. This method should set things
    ' in motion so your service can do its work.
    EventLog.WriteEntry("Windows Dienst Nachricht: Hallo", EventLogEntryType.Information)
  End Sub
 
  Protected Overrides Sub OnStop()
    ' Add code here to perform any tear-down necessary to stop your service.
  End Sub
 
End Class

Dieser Tipp wurde bereits 30.316 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Aktuelle Diskussion anzeigen (3 Beiträge)

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel