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.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage