Re[2]: Сервис/консоль в nt.
От: vadimus  
Дата: 11.03.02 15:57
Оценка:
Здравствуйте Lexey, Вы писали:

L>Здравствуйте vadimus, Вы писали:


V>>Есть ли "документированная" возможность определить в программе как она запущена — из сервисов или как консоль? Пример — апач можно и так и эдак пускать, если консоль — весь лог на экране, если сервис — то в eventLog-e.

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

L>Это уже как-то раз здесь обсуждали. Просто вызываешь StartServiceCtrlDispatcher — если облом, то работаем как обычная консоль, иначе как сервис.


Это тоже пробовал, но там таймаут какой-то непонятный (хотя догадываюсь почему), секунд 10, вроде тоже глюкаво как-то выходит.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.