Как проверить, работает ли процесс как служба Windows - PullRequest
2 голосов
/ 22 мая 2011

Я делаю некоторый код на C и хочу, чтобы мой код мог определять, работает ли он как служба Windows или как обычное приложение. AFAIK, что службы Windows работают в сеансе 0 на Windows Vista, 7 и Server 2008Я не уверен, что если мы будем использовать недокументированный интерфейс ntdll для запроса информации о процессе, это поможет, например, если мы получим PEB.

Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 22 мая 2011

Я уверен, что вы должны звонить StartServiceCtrlDispatcher, если вы запускаете процесс как службу. Просто проверьте код возврата для ERROR_FAILED_SERVICE_CONTROLLER_CONNECT. Это скажет вам, запускаете ли вы процесс как службу.

1 голос
/ 22 мая 2011

Перечислите процессы, используйте QueryServiceStatusEx и найдите, соответствует ли какой-либо из процессов текущему идентификатору процесса

0 голосов
/ 23 мая 2011

Вы можете запросить токен процесса для SECURITY_SERVICE_RID .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...