Как мы узнаем, запущено ли приложение C ++ как служба Windows?

У нас есть консольное приложение, которое мы запускаем из командной строки для отладки, но мы также запускаем его как службу NT для производства.

Прямо сейчас код имеет такую логику:

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

Есть ли лучший способ проверить, как запущен процесс? Мы являемся проектом с открытым исходным кодом, поэтому каждый раз, когда мы получаем нового разработчика Windows, мы должны объяснять, что они должны указывать-f arg, чтобы остановить приложение от подключения к сервисному контроллеру.

Как насчет проверки родительского процесса?

Обновить:

Я забыл упомянуть, что мы используем C ++ (неуправляемый).

Ответы на вопрос(5)

Ваш ответ на вопрос