Rubrik: System/Windows · Prozesse/Tasks | VB-Versionen: VB5, VB6 | 21.05.03 |
Dienst anhalten und wieder starten Dieser Tipp verrät, wie sich ein Dienst per VB und WMI anhalten und auch wieder starten lässt. | ||
Autor: Gerhard Kuklau | Bewertung: | Views: 27.887 |
ohne Homepage | System: WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Wie kann ich aus meinem VB-Programm heraus einen Dienst anhalten und/oder wieder starten?
Diese Frage wird immer wieder in Verbindung mit dem Nachrichtendienst (Messenger) und dem Taskplaner (Schedule) gestellt. Heute möchten wir Ihnen am Beispiel des Taskplaners zeigen, wie Sie diese Aufgabe mit Hilfe von WMI erledigen. Dazu brauchen Sie eine Form und zwei Steuerelementefelder (Command1 und Command2) mit jeweils zwei Schaltflächen.
Option Explicit Dim oService As Object
Private Sub Command2_Click(Index As Integer) ' Den Dienst 'Schedule' starten und/oder beenden: ' =============================================== On Error Resume Next Set oService = GetObject("WinNT://" & _ Environ("computername") & "/SCHEDULE,service") If Err.Number = 0 Then With oService Select Case Index Case 0 If .Status = 4 Then .Stop MsgBox "SCHEDULE angehalten" End If Case 1 If .Status = 1 Then .Start MsgBox "SCHEDULE wieder gestartet" End If End Select End With Else MsgBox "Fehler: " & Err.Number & vbCrLf & _ Err.Description, vbCritical, "Fehler" End If End Sub
Hiermit können Sie den Taskplaner jetzt stoppen und wieder starten. Um den Taskplaner auch beim nächsten Systemstart nicht wieder anzustarten, müssen Sie die Startart des Dienstes entsprechend verändern. Sie müssen die Startart "deaktiviert" einstellen:
Private Sub Command1_Click(Index As Integer) ' Startart für den Dienst 'Schedule' (Taskplaner) setzen: ' ======================================================= On Error Resume Next Set oService = GetObject("WinNT://" & _ Environ("computername") & "/SCHEDULE,service") If Err.Number = 0 Then With oService Select Case Index Case 0 .Put "StartType", 2 .SetInfo MsgBox "StartType=2 (automatic) für SCHEDULE gesetzt" Case 1 .Put "StartType", 4 .SetInfo MsgBox "StartType=4 (deaktiviert) für SCHEDULE gesetzt" End Select End With Else MsgBox "Fehler: " & Err.Number & vbCrLf & _ Err.Description, vbCritical, "Fehler" End If End Sub
Anmerkung:
Soll der Nachrichtendienst gestartet, gestoppt, aktiviert, oder deaktiviert werden, ersetzen Sie im o.g. Beispiel den Namen des Taskplaners (Schedule) durch den Namen des Nachrichtendienstes (Messenger).