Wie können wir feststellen, ob eine C ++ - Anwendung als Windows-Dienst gestartet wurde?
Wir haben eine Konsolen-App, die wir zum Debuggen über die Eingabeaufforderung starten, aber wir starten sie auch als NT-Dienst für die Produktion.
Im Moment hat der Code diese Logik:
if (__argc <= 1) {
assumeService();
} else {
assumeForgound();
}
Gibt es eine bessere Möglichkeit zu überprüfen, wie der Prozess gestartet wurde? Wir sind ein Open-Source-Projekt, daher müssen wir jedes Mal, wenn wir einen neuen Windows-Entwickler bekommen, erklären, dass er das angeben muss-f
arg, um zu verhindern, dass die App eine Verbindung zum Service-Controller herstellt.
Was ist mit der Überprüfung des übergeordneten Prozesses?
Aktualisieren:Ich habe vergessen zu erwähnen, dass wir C ++ (nicht verwaltet) verwenden.