Как я могу получить установленный каталог для C ++ Windows Service? - PullRequest
1 голос
/ 13 октября 2010

У меня есть служба C ++ для Windows, и я хотел бы получить доступ к исполняемому файлу в том же каталоге, что и исполняемый файл службы (через системную функцию).Я полагаю, что для этого мне нужно найти этот каталог, чтобы я мог ссылаться на путь к целевому исполняемому файлу.Как найти каталог, в котором установлена ​​служба, в коде?

Ответы [ 4 ]

3 голосов
/ 13 октября 2010

Вы можете использовать функцию QueryServiceConfig () . Путь к двоичному файлу хранится в поле lpBinaryPathName структуры QUERY_SERVICE_CONFIG.

3 голосов
/ 13 октября 2010

Как уже упоминали другие, GetModuleFileName() может выполнять эту работу, но YMMV.Самый надежный способ - прочитать эту информацию из раздела реестра HKLM\System\CurrentControlSet\Services\%ServiceName%\ImagePath, где %ServiceName% - это имя вашей службы.

Для примера чтения реестра с помощью проверки C ++ это out.

Удачи!

2 голосов
/ 13 октября 2010

Зависит.

Если это изнутри службы, вы всегда можете использовать GetModuleFileName, что дает полный путь.

Если это из другой программы, то, поскольку она обслуживает васможет проверить информацию реестра службы.

1 голос
/ 13 октября 2010

Вы можете использовать функцию GetModuleFileName . См. Пример Установка службы .

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