Ich habe ein Windows-Service-Projekt, das 64 Bit ist, und jetzt brauche ich eine 32 Bit ausführbare Datei, die die gleiche Lebensdauer des Windows-Dienstes haben sollte. Da die 64-Bit-App-Domäne keine 32-Bit-DLL laden kann, muss ich diese 32-Bit-ausführbare Datei innerhalb der OnStart() - Funktion des 64-Bit-Windows-Dienstes starten. Ich frage mich, wie sollte ich die Lebensdauer dieser 32-Bit-ausführbaren Datei beibehalten? Was ich jetzt getan habe, ist, die ausführbare Datei in OnStart() zu starten und sie in OnStop() zu beenden.Windows-Dienstprojekt verwaltet eine andere ausführbare Datei?
Aber was ich jetzt besorgt ist, was ist, wenn diese 32 Bit ausführbare Datei (Prozess) getötet oder abgestürzt mitten in der Windows-Dienst ausgeführt wird? Ich muss es neu starten. Gibt es einen Ort oder eine Funktion in einem Windows-Dienst, wo ich andere Prozesse überwachen kann und wann immer diese Prozesse getötet werden, kann ich sie erneut starten? Oder ich denke an verschachtelte Windows-Dienste, aber ich finde kein nützliches Material zu diesem Thema.
Danke für jede Hilfe!
Sie haben also einen Dienst, der auf einer Anwendung beruht? Das ist ein schlechtes Design ... was ist, wenn kein Benutzer angemeldet ist? – KingCronus
Wenn beide Dienste auf der anderen Seite sind, können Sie einen ServiceController verwenden, um den Status des anderen zu überprüfen und sogar zu starten/stoppen/neu zu starten. Dies liegt daran, dass alle Dienste als administrative Vorteile dienen. – KingCronus
@AdamKing Danke für Ihre Antwort. Warum genau ist es eine schlechte Idee? Ich erinnere mich, dass ich etwas über das Starten einer ausführbaren Datei auch ohne Windows-Login gelesen habe. Und meine 32 Bit ausführbare Datei benötigt keine Interaktion. Aber es ist grundsätzlich meine Freiheit zu entscheiden, ob der 32-Bit-Prozess eine Anwendung oder ein Windows-Dienst ist. Also werde ich auch den ServiceController überprüfen. – tete