Programm welches als Dienst (service) läuft restarten
-
Hallo,
ich habe hier ein Programm geschrieben, welches unter Windows als system dienst im Hintergrund läuft. Nun ist es ab und an notwendig dieses Programm einfach neu zu starten. Ich hab es schon mit createprocess(..) versucht selbst zu starten und die alte Instanz mit exitprocess() zu schliessen. Aber leider schlägt CreateProcess immer fehl. Läuft das Programm als normale Konsolen Applikation funktioniert alles einwandfrei. Ich vermute das es irgendwie mit den rechten zusammenhängt die so ein Dienst nur hat.
Kennt Ihr vielleicht einen Weg den Dienst aus dem Programm heraus zu starten?
-
Hallo !
Du kannst den system() Befehl benutzen.
system("sc start 'dein_service'");
Gruß,
p.
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Schau Dir mal den Code hier an
http://www.naughter.com/serv.html
speziell die Klasse CNTServiceControlManager und CNTScmService!Dir Reihenfolge ist in etwas:
OpenSCManager
OpenService
StartService
-
rem restart.bat net stop myservice net start myserviceKannste mit "at" oder "scheduled tasks" ganz einfach automatisieren. (Bei "scheduled tasks" nimm das "NT AUTHORITY\SYSTEM" Konto, sonst hagelt es u.U. Probleme.)
Oder *muss* es aus einem eigenen Programm raus sein? In dem Fall könntest du das einfach über "CreateProcess( ... "cmd.exe /c restart.bat" ...) rausstarten wenn dir das nicht "zu billig" ist.