FAQ 0118: Wie kann ich Dienste starten, beenden oder eigene Dienste erstellen?
von Helge Rex
Frage
Wie kann ich einen Dienst starten oder beenden?
Wie kann ich einen eigenen Dienst erstellen?
Hilfe gegen übriggebliebene Icons im SystemTray gibt es hier:
Ausschreibung: SystemTray aktualisieren.
Dienste per Shell starten oder beenden
Mittels FAQ 0011: Eine andere Anwendung starten gestaltet sich das Starten und Beenden eines Dienstes recht einfach:
' Dienst starten Call Shell(Environ$("COMSPEC") & " /c net start Dienstname", vbHide) ' Dienst beenden Call Shell(Environ$("COMSPEC") & " /c net stop Dienstname", vbHide)
Dienste per WMI starten oder beenden
WMI ist ab Windows 2000 im Lieferumfang enthalten und kann für frühere Windows-Versionen nachgerüstet werden.
Dim oWMIService As Object Dim strComputer As String strComputer = "." Set oWMIService = GetObject("winmgmts://" & strComputer & _ "/root/cimv2:Win32_Service.Name='DienstName'") ' Dienst starten Call oWMIService.StopService ' Dienst beenden Call oWMIService.StartService
Klassen ServiceControlManager und ServiceManager
Florian Rittmeier hat eine Klasse geschrieben, mit der man Dienste bequem handhaben kann:
Klasse ServiceControlManager
Kai Liebenau und Achim Neubauer haben ebenfalls ein Klassenpaket geschrieben:
ServiceManager-Klassenpaket
Modul Services
Mario Grimm hatte dieses Beispiel gepostet:
Modul zum Starten oder Beenden von Diensten
Dienste erstellen
Microsoft liefert ein OCX zusammen mit Visual Basic und Visual Studio aus, mit dessen Hilfe ein Dienst erstellt werden. Die Verwendung dieses OCX' zeigt Programm als NT-Service (Dienst) starten [Tipp 0467].
Alternativ kann man die Funktionen der Win32-API, die im OCX gebündelt werden, auch selbst deklarieren und aufrufen. In der Microsoft Knowledge Base gibt es einen Artikel dazu:
175948 - INFO: Running Visual Basic Applications as Windows NT Services
Wer sich diesen Artikel in der MSDN Library, die mit Visual Basic (oder Visual Studio) mitgeliefert wurde, anschaut, wird auch Quelltext finden.
Welcher Weg auch gegangen werden soll, Microsoft rät davon ab, Dienste mit Visual Basic zu erstellen. Die Gründe werden im zuvor genannten Artikel aufgeführt.
Ihre Meinung
Falls Sie Fragen zu dieser FAQ haben, Ihre Erfahrung mit anderen Nutzern austauschen möchten oder auf eine Ergänzung hinweisen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.