Ich habe ein Python-Skript, das einen Bluetooth-Dienst über die Registrierung startet, indem der Start
Wert durch den Wert ersetzt wird, den manual
ich tun muss, um den Dienst vom CMD neu zu starten. Jetzt weiß ich, dass ich dies durch Eingabe tun kann. net start "Bluetooth Support Service"
Wenn ich dies jedoch nach dem Ausführen meines Skripts mache, findet es den Dienst nicht und gibt Folgendes aus:
C:\Users\z-perkins-thomas\Documents\bin\python\fix-dap>net start "Bluetooth Support Service"
System error 1058 has occurred.
The service cannot be started, either because it is disabled or because it has no enabled devices associated with it.
Wie kann ein Dienst nach der erneuten Aktivierung korrekt neu gestartet werden?
sc config bthserv start= demand
stattdessen mit mit aktivieren ? Funktioniert es nach einem Neustart?Antworten:
Durch das Festlegen des Werts in der Registrierung werden die speicherinternen Informationen des Service Control Managers nicht aktualisiert. Die unterstützte Methode ist die Verwendung der SCM-API oder eines Befehlszeilenprogramms, das dies für Sie erledigt:
Beachten Sie, dass der Dienstname,
bthserv
die Dienst-ID und nicht der Anzeigename ist. Sie können die ID eines bestimmten Dienstes in dessen Eigenschaftenfenster im Dienste-MMC-Snap-In (services.msc
) anzeigen .Sie können den Dienst dann wie gewohnt starten.
Obwohl durch manuelles Durchschlagen der Registrierung Dienste den neuen geänderten Status anzeigen, ist der Dienst seltsamerweise immer noch effektiv deaktiviert. Ich habe dies getestet und festgestellt, dass es nur mit der unterstützten Methode oder möglicherweise nach einem Neustart wirklich aktiviert wird. Da Ihr Skript bereits ein Windows-Dienstprogramm (
net
) verwendet, wird auchsc
die Portabilität durch die Verwendung nicht beeinträchtigt.quelle
sc
wird Ihre Lösung nicht weniger portabel, wenn Sie den Dienst auch neu konfigurieren (anstelle des Skripts zum Ändern der Registrierung), da Sie bereits darauf angewiesen sindnet
.