Hallo,
Zitat von
Jens Hartmann:
Habe das ganze dann ausprobiert, in dem ich den Dienst gestoppt habe und wieder gestartet habe. Funktioniert dann auch.
Aber beim Windows Start immer noch nicht. Ich vermute das ein anderer Dienst abgefragt wird, kann das sein ?
'ne, kann eigentlich nicht sein. Das manuelle Stoppen und Starten des Dienstes könnte schneller funktionieren, als beim Rechnerstart. Was passiert, wenn Du den Dienst manuell stoppst, das Programm startes, den Dienst manuell startest. Hier würde ich vermuten, dass das am ehesten an das Problem beim Autostart herankommt.
Wo liegt das Programm? Hat es beim Start aus dem Autostart das gleiche Arbeitsverzeichnis wie beim "normalen" start oder kommt es hier eventuell mit dem Arbeitspfad nicht zurecht, so dass ein anderer Fehler auftritt, als eigentlich vermutet. Sprich: Wenn der Dienst läuft und Du startest das Programm über das Startmenü/Programme/Autostart. Geht das fehlerfrei?
Wie hast Du das Timerinterval gesetzt? Ist das ausreichend lang? Hier würde ich als Wartezeit eher Minuten als einige Sekunden setzen. Bei meinem Rechner vergehen locker 2 bis 3 Minuten, bevor ich sicher auf alles zugreifen kann, auch wenn die Oberfläche lange vorher voll funktionsfähig ist.
Wenn Du in der DOS-Box
net start eingibst, solltest Du dort den korrekten Namen des zu überprüfenden Dienstes finden (wenn der Dienst gestartet ist). Die dort erscheinende Zeichenfolge musst Du dann bei ServiceGetStatus abfragen.
Die Art, wie Du das realisiert hast, erscheint mir korrekt. Momentan sehe ich nur drei mögliche Fehler: Falscher Dienstname in der Abfrage, zu kurze Wartezeit bis zum Dienststart oder ein anderer Fehler, der nur beim Aufruf aus dem Autostartordner auftritt.
Wenn das alles irgendwie nicht weiterhilft, so starte das Programm aus der Autostart heraus mal bitte mit folgender Batchdatei:
Code:
@echo off
:start
@echo on
net start | find "DeinDienstName"
@echo off
set myError=%ERRORLEVEL%
echo Fehlercode von Find = %myError%
if "%myError%"=="1" echo Der Dienst wurde noch nicht gestartet
if "%myError%"=="1" Pause
if "%myError%"=="1" goto start
echo Start Deines Programmes
:DeinProgrammOhneDoppelpunktDavor.exe
set myError=
und schau mal, ob nach endlicher Zeit und endlichem Betätigen von AnyKey Dein Programm so korrekt gestartet werden kann.