
Есть ли способ запустить службу с помощью sc
(или любого другого инструмента) в Windows и задать для нее рабочий каталог, отличный от C:\Windows\system32
(который является каталогом по умолчанию)?
Я знаю, что могу указать это в исходном коде сервиса, но я ищу решение, которое не требует изменения исходного кода сервиса.
решение1
Службы запускаются из приложения, называемого Service Control Manager. Это приложение находится в системном каталоге %WinDir%\System32
, и это его текущий рабочий каталог.
При запуске системной службы она по умолчанию наследует все атрибуты диспетчера управления службами и параметры, указанные в определении службы.
К сожалению, текущий рабочий каталог не входит в число этих параметров, как вы можете видеть в Функция ChangeServiceConfigA.
Если вы хотите изменить текущий рабочий каталог службы, вам придется сделать это изнутри самой службы.