Como sabemos se um aplicativo C ++ é lançado como um serviço do Windows?

Temos um aplicativo de console que lançamos a partir do prompt de comando para depuração, mas também o lançamos como um serviço NT para produção.

Agora, o código tem essa lógica:

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

Existe uma maneira melhor de verificar como o processo foi lançado? Somos um projeto de código aberto, então toda vez que obtemos um novo desenvolvedor do Windows, temos que explicar que eles devem especificar o-f arg para parar o aplicativo de se conectar ao controlador de serviço.

Que tal verificar o processo pai?

Atualizar:

Esqueci de mencionar que estamos usando o C ++ (não gerenciado).

questionAnswers(5)

yourAnswerToTheQuestion