Как я могу найти местоположение исполняемого файла, который работает как служба Windows во время выполнения? - PullRequest
2 голосов
/ 18 ноября 2008

Как я могу найти местоположение exe, который работает как служба Windows во время выполнения?

Ответы [ 8 ]

10 голосов
/ 18 ноября 2008

Использовать поиск в реестре:

, например

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\' + ServiceDisplayName;

затем прочитайте ImagePath значение.

4 голосов
/ 18 ноября 2008

Программно или с помощью инструмента?

В последнем случае я рекомендую использовать Sysinternals Process Explorer : в нем отображаются все запущенные процессы, включая службы, а одним из полей является командная строка, используемая для запуска процесса, включая полный путь.

Их утилита командной строки, PsService , также может быть полезна.

2 голосов
/ 18 ноября 2008

.NET - Assembly.GetExecutingAssembly().Location (другие предложили Application.ExecutablePath, но для этого требуется ссылка на System.Windows.Forms, которая обычно не требуется службе)

Родной - GetModuleFileName(NULL, ...)

1 голос
/ 18 ноября 2008

Если это .NET, вам нужно Application.ExecutablePath (если вы пытаетесь получить собственный путь приложения запущенной службы Windows). Если вы пытаетесь найти путь к какой-либо другой запущенной службе Windows, это другая история.

0 голосов
/ 12 апреля 2009

Для собственного кода Windows: GetModuleFileName (NULL ...) в EXE-файле (например, не в DLL, загруженной службой).

0 голосов
/ 18 ноября 2008

Если вы не используете .NET, самый простой способ - использовать функцию Win32 :: QueryServiceConfig () . Это даст вам имя пути, отображаемое имя и всякую другую информацию об услуге.

0 голосов
/ 18 ноября 2008

Обычно они запускаются под windows \ system32, даже если вы установили его на другой диск

0 голосов
/ 18 ноября 2008

Если ваш исполняемый файл подключается к определенному порту, вы можете проанализировать вывод из

netstat -ab

Возможно, не самое привлекательное решение.

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