Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Программирование Новый топик    Ответить
 Получить имя windows-сервиса по его хендлу  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1551
Есть handle сервиса полученный через CreateService или OpenService.
В том контексте где используется хендл, уже нет менеджера, т.е. не известно откуда этот хендл пришел, из удаленной машины или из локальной.
Как по этому хендлу получить его имя.
DisplayName можно получить через QueryServiceConfig.

Но вот имя через GetServiceKeyName по DisplayName требует хендл менеджера.

Собственно вопрос. Как, зная только хендл сервиса узнать его имя?
10 июн 19, 17:24    [21906096]     Ответить | Цитировать Сообщить модератору
 Re: Получить имя windows-сервиса по его хендлу  [new]
Eolt
Member

Откуда:
Сообщений: 1480
Наверное получить список процессов через CreateToolhelp32Snapshot.
Потом перебрать его через Process32First и Process32Next, получая хендлы каждого процесса и сравнивая с искомым.
Так получить хендл нужного процесса. Получить имя исполняемого файла этого процесса.
Затем перебрать список служб через EnumServicesStatusEx, сравнивая имена исполнямых файлов.
Так получить нужное имя службы.
10 июн 19, 17:57    [21906112]     Ответить | Цитировать Сообщить модератору
 Re: Получить имя windows-сервиса по его хендлу  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1551
Eolt,

EnumServicesStatusEx требует хендл менеджера.

В том контексте где используется хендл сервиса, уже нет менеджера (т.е. хендл менеджера не известен)
10 июн 19, 18:11    [21906125]     Ответить | Цитировать Сообщить модератору
Все форумы / Программирование Ответить