Как мы узнаем, запущено ли приложение C ++ как служба Windows?
У нас есть консольное приложение, которое мы запускаем из командной строки для отладки, но мы также запускаем его как службу NT для производства.
Прямо сейчас код имеет такую логику:
if (__argc <= 1) {
assumeService();
} else {
assumeForgound();
}
Есть ли лучший способ проверить, как запущен процесс? Мы являемся проектом с открытым исходным кодом, поэтому каждый раз, когда мы получаем нового разработчика Windows, мы должны объяснять, что они должны указывать-f
arg, чтобы остановить приложение от подключения к сервисному контроллеру.
Как насчет проверки родительского процесса?
Обновить:Я забыл упомянуть, что мы используем C ++ (неуправляемый).