Einen Service erstellen
-
Hi,
ich möchte eine Anwendung als Service erstellen.
Wie ich einen Service installieren kann lese ich mir gerade an.Ich frage mich allerdings welche Anforderungen an die EXE die als
Service eingetragen werden soll gestellt werden.Gibt es da etwas besonderes zu beachten? Die Service.exe muss dann doch
ganz speziell beschaffen sein nehme ich an?bye
Alloi :xmas1:
-
Der Service wird wohl irgendwie mit dem Service-Manager kommunizieren
müssen, da du der vermutlich ne Rückinfo braucht, ob der Dienst auch
gestartet werden konnte.Ich glaube da können die Spezi hier im Forum mehr zu sagen
-
Ok nach längerer Suche habe ich auch nichts gefunden. Interessant ist es
allemal. Man kann ja ganz einfach einen Service in Windows anlegen und
auf eine Datei laufen lassen.Aber wie du schon sagtest...bei mir will er die GUI.exe nicht starten,
die im Service verankert ist.Kann jemand dazu klärend beitragen?! Ich erhalte immer Fehler 1053: Der
Dienst antwortet nicht rechtzeitig auf Start - Steuerungsaufforderung.
Der Dienst konnte nicht gestartet werden.Man kann also nicht jede beliebige EXE asl "Dienst" angeben. Aber wie muss
eine korrekte Service.exe dann aussehen? Diese muss dann ja als Mittler die
GUI.exe aufrufen?
-
-
Frage zum Service, den man mit dem Visual Studio ja auch als Projekt anlegen
kann:Wo kann man da eigenen Code platzieren?
/// <summary> /// Führen Sie die Vorgänge aus, um den Dienst zu starten. /// </summary> void OnStart(String* args[]) { myprotectedfunction(); // TODO: Fügen Sie hier Code hinzu, um Ihren Dienst zu starten. }
In OnStart() kann ja nicht sein, da dort nur der Dienst gestartet wird.
Man muss also auf eine eigene Funktion verzweigen, nur wann und wo?In OnStart() führt dazu, dass der Status vom Service immer auf "wird gestartet" steht...
-
Bevor sich jemand die Mühe macht. Ich muss einen Thread erzeugen.
Das habe ich mir nun bereits angelesen.Aber warum kann ich meinen Thread nicht aus meinem Programm
raus beenden?SERVICE_STATUS ssStatus; if (!ControlService(hService, SERVICE_CONTROL_STOP, &ssStatus)) return false;
Hier erhalte ich Konvertierung des Parameters 3 von 'SERVICE_STATUS *__w64 ' in 'LPSERVICE_STATUS' nicht möglich.
Dabei wird doch sogar in der MSDN ein solches Beispiel gezeigt.
-
Ganz verstehe ich nicht was Du vorhast?
Was für ein Service Projekt hast Du nun verwendet?
Warum hast Du Jochens Link nicht verfolgt?Undnein: Im Allgemeinen musst Du keinen Thread erzeugen.
-
Es geht um http://msdn2.microsoft.com/en-gb/library/ms682108.aspx
Wie legt man da die struct richtig an?
Das hat aber wohl nichts mit dem Service selbst zu tun, sondern mehr
damit wie man aus der eigenen Anwendung den Service z.B. stoppen
und danach löschen kann (DeleteService/ControlService).Ohne den Service zu stoppen wird er erst nach einem Neustart gelöscht!
Vielleicht kannst du ja ein funktionierendes Beispiel für die struct
bringen?
-
Ich verstehe immer weniger was Du willst.
In dem Beispiel
http://www.codeproject.com/system/serviceskeleton.asp
ist doch alles drin?Weitere Code (wenn Du ihn lesen willst) hier
http://www.naughter.com/serv.html
-
Was ist denn an dem Beispiel:
http://www.codeproject.com/system/serviceskeleton.asp
nicht funktionierend?