Seite 1 von 1
Windows Dienst beenden
Verfasst: Donnerstag 13. Juli 2023, 17:38
von pythonstarter
Hallo liebe Forenmitglieder,
ich möchte gerne mit einem Pythonscript einen Windows-Service beenden, um dann mehrere Datenbankbefehle auszuführen. Im Anschluss möchte ich den Dienst wieder starten.
Gibt es für das Beenden und Starten des Dienstes ein Modul (z.B. os. oder subprocess), das ich nutzen kann?
Vielen Dank im Voraus
Re: Windows Dienst beenden
Verfasst: Donnerstag 13. Juli 2023, 18:35
von Sirius3
Das Modul ist bei pywin32 dabei:
https://www.markjour.com/docs/pywin32-d ... rvice.html
Mit der Anleitung von in der Microsoft-Dokumentation (
https://learn.microsoft.com/en-us/windo ... -a-service) sollte das einfach umsetzbar sein.
Re: Windows Dienst beenden
Verfasst: Samstag 15. Juli 2023, 15:19
von pythonstarter
Hallo Sirius,
vielen Dank für Deine Antwort.
Habe es aber dann doch anders gelöst:
Code: Alles auswählen
import subprocess
# Dienst starten
start_command = 'net start <service_name>'
subprocess.run(start_command, shell=True)
# Dienst beenden
stop_command = 'net stop <service_name>'
subprocess.run(stop_command, shell=True)
Re: Windows Dienst beenden
Verfasst: Samstag 15. Juli 2023, 17:12
von __blackjack__
@pythonstarter: Da jetzt bitte das ``shell=True`` rausnehmen und die Kommandos als Liste übergeben und ein ``check=True`` dazu packen.
Re: Windows Dienst beenden
Verfasst: Samstag 15. Juli 2023, 17:58
von pythonstarter
@ __blackjack__
Wenn Du mir noch erklären könntest, warum ich das tun soll...
Re: Windows Dienst beenden
Verfasst: Samstag 15. Juli 2023, 18:59
von __blackjack__
@pythonstarter: Weil man im Moment die gleichen Probleme hat die `os.system()` hat, weswegen man `subprocess` nehmen sollte. Bezüglich `check` schau in die Dokumentation was das bewirkt.
Re: Windows Dienst beenden
Verfasst: Samstag 15. Juli 2023, 19:53
von sparrow
@pythonstarter: Und das Kommandi mit einer Liste von einer Liste, statt einer einzigen Zeichenkette, damit entsprechend escaped werden kann.