Есть ли "документированная" возможность определить в программе как она запущена — из сервисов или как консоль? Пример — апач можно и так и эдак пускать, если консоль — весь лог на экране, если сервис — то в eventLog-e.
Недокументированная возможность есть — "NtQueryInformationProcess" из ntdll.dll позволяет получить id породившего процесса, но не подходит — начальник не позволяет.
GetStdHandle() (если запуск произошел из сервисов) возвращает 0, но не INVALID_HANDLE_VALUE — как в m s d n написано, т.е. непонятно норамльный это хендл или нет.
А где еще рыть ума не приложу.