Jak stwierdzić, czy aplikacja C ++ jest uruchomiona jako usługa systemu Windows?

Mamy aplikację konsolową, którą uruchamiamy z wiersza poleceń do debugowania, ale uruchamiamy ją również jako usługę NT do produkcji.

W tej chwili kod ma taką logikę:

if (__argc <= 1) {
  assumeService();
} else {
  assumeForgound();
}

Czy jest lepszy sposób na sprawdzenie, jak proces został uruchomiony? Jesteśmy projektem open source, więc za każdym razem, gdy otrzymujemy nowego programistę Windows, musimy wyjaśnić, że muszą określić-f arg, aby zatrzymać połączenie aplikacji z kontrolerem usługi.

Co z sprawdzaniem procesu macierzystego?

Aktualizacja:

Zapomniałem wspomnieć, że używamy C ++ (niezarządzanego).

questionAnswers(5)

yourAnswerToTheQuestion