Wie man eine Liste aller installierter Dienste erhält, haben wir Ihnen bereits gezeigt: In unserem heutigen Extratipp zeigen wir Ihnen, wie man installierte Dienste neu starten, anhalten und wieder fortsetzen kann. Auch dieses Mal verwenden wir wieder die ServiceController-Klasse aus dem Namensraum "System.ServiceProcess" zurückgreifen. Die entsprechende DLL muss jedoch zunächst über "Projekt - Verweise" dem Projekt hinzugefügt werden. Nachfolgend vier Funktionen, um einen Dienst zu starten, anzuhalten, fortzusetzen und zu stoppen. Die jeweiligen Funktionen erwarten im ersten Parameter den Namen des Dienstes. Optional kann noch eine TimeOut-Zeit in Sekunden angegeben werden. Der Rückgabewert der Funktionen entspricht den Status des Dienstes. Imports System.ServiceProcess ... ' Dienst starten Public Function StartService(ByVal sName As String, _ Optional ByVal nWaitSek As Integer = 2) As ServiceControllerStatus Dim nState As ServiceControllerStatus = ServiceControllerStatus.Stopped ' Dienst-Objekt erstellen Me.Cursor = Cursors.WaitCursor Try Dim oService As ServiceController = New ServiceController(sName) ' Dienst starten, falls nicht bereits geschehen With oService nState = .Status If .Status <> ServiceControllerStatus.Running Then .Start() ' Auf gewünschten Status warten... .WaitForStatus(ServiceControllerStatus.Running, _ New TimeSpan(0, 0, nWaitSek)) End If nState = .Status End With Catch ex As Exception ' Dienst nicht gefunden / Fehler MsgBox("Fehler beim Starten des Dienstes!" & _ vbCrLf & ex.Message.ToString) End Try Me.Cursor = Cursors.Default Return nState End Function ' Dienst stoppen Public Function StopService(ByVal sName As String, _ Optional ByVal nWaitSek As Integer = 2) As ServiceControllerStatus Dim nState As ServiceControllerStatus = ServiceControllerStatus.Stopped ' Dienst-Objekt erstellen Me.Cursor = Cursors.WaitCursor Try Dim oService As ServiceController = New ServiceController(sName) ' Dienst stoppen, falls nicht bereits geschehen With oService nState = .Status If .Status <> ServiceControllerStatus.Stopped Then .Stop() ' Auf gewünschten Status warten... .WaitForStatus(ServiceControllerStatus.Stopped, _ New TimeSpan(0, 0, nWaitSek)) End If nState = .Status End With Catch ex As Exception ' Dienst nicht gefunden / Fehler MsgBox("Fehler beim Stoppen des Dienstes!" & _ vbCrLf & ex.Message.ToString) End Try Me.Cursor = Cursors.Default Return nState End Function ' Dienst anhalten Public Function PauseService(ByVal sName As String, _ Optional ByVal nWaitSek As Integer = 2) As ServiceControllerStatus Dim nState As ServiceControllerStatus = ServiceControllerStatus.Stopped ' Dienst-Objekt erstellen Me.Cursor = Cursors.WaitCursor Try Dim oService As ServiceController = New ServiceController(sName) ' Dienst anhalten, falls nicht bereits geschehen With oService nState = .Status If .Status <> ServiceControllerStatus.Paused And _ .Status <> ServiceControllerStatus.Stopped Then .Pause() ' Auf gewünschten Status warten... .WaitForStatus(ServiceControllerStatus.Paused, _ New TimeSpan(0, 0, nWaitSek)) End If nState = .Status End With Catch ex As Exception ' Dienst nicht gefunden / Fehler MsgBox("Fehler beim Anhalten des Dienstes!" & _ vbCrLf & ex.Message.ToString) End Try Me.Cursor = Cursors.Default Return nState End Function ' Dienst fortsetzen Public Function ContinueService(ByVal sName As String, _ Optional ByVal nWaitSek As Integer = 2) As ServiceControllerStatus Dim nState As ServiceControllerStatus = ServiceControllerStatus.Stopped ' Dienst-Objekt erstellen Me.Cursor = Cursors.WaitCursor Try Dim oService As ServiceController = New ServiceController(sName) ' Dienst fortsetzen, falls nicht bereits geschehen With oService nState = .Status If .Status = ServiceControllerStatus.Paused Then .Continue() ' Auf gewünschten Status warten... .WaitForStatus(ServiceControllerStatus.Running, _ New TimeSpan(0, 0, nWaitSek)) End If nState = .Status End With Catch ex As Exception ' Dienst nicht gefunden / Fehler MsgBox("Fehler beim Fortsetzen des Dienstes!" & _ vbCrLf & ex.Message.ToString) End Try Me.Cursor = Cursors.Default Return nState End Function |