¿Cómo podemos saber si una aplicación de C ++ se inicia como un servicio de Windows?

Tenemos una aplicación de consola que iniciamos desde el símbolo del sistema para la depuración, pero también lanzamos esto como un servicio de NT para la producción.

En este momento, el código tiene esta lógica:

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

¿Hay una mejor manera de verificar cómo se ha iniciado el proceso? Somos un proyecto de código abierto, por lo que cada vez que obtenemos un nuevo desarrollador de Windows tenemos que explicar que deben especificar el-f arg para evitar que la aplicación se conecte al controlador de servicio.

¿Qué hay de verificar el proceso padre?

Actualizar:

Olvidé mencionar que estamos usando C ++ (no administrado).

Respuestas a la pregunta(5)

Su respuesta a la pregunta