WiX ServiceInstall - настройка службы для запуска в качестве текущего пользователя Windows

Я устанавливаю службу Windows, используя WiX. Как заставить службу работать в контексте пользователя Windows, который запускает установщик?

1 ответ

Решение

Вам необходимо иметь имя учетной записи и пароль для пользователя, от имени которого вы хотите запустить службу. Я смог сделать это, добавив пользовательский интерфейс в мой установщик, запрашивая имя пользователя и пароль, а затем используя предоставленные значения для атрибутов Account и Password в элементе ServiceInsall.

Обратите внимание, что любая учетная запись, используемая для запуска службы, должна иметь привилегию службы "Вход в систему". Это не предоставляется пользователям по умолчанию. Мне удалось использовать элемент User из схемы UtilExtension, чтобы добавить эту привилегию пользователю. Добавление привилегированного пользователя будет успешным, только если пользователь, выполняющий программу установки, является администратором.

Вот код, который я использовал. SERVICECREDENTIALS_USERLOGIN и SERVICECREDENTIALS_PASSWORD - это свойства, заполняемые из пользовательского интерфейса.

<Component Id="ServiceEXE" Guid="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx">
  <File Id="ServiceEXE" Name="YourService.exe" DiskId="1"
        Source="path\to\YourService.exe" KeyPath="yes" />
  <util:User Id="UpdateUserLogonAsService" UpdateIfExists="yes" CreateUser="no" Name="[SERVICECREDENTIALS_USERLOGIN]"
             LogonAsService="yes" />
  <ServiceInstall Id="ServiceInstall" Type="ownProcess" Vital="yes" Name="YourService"
                  DisplayName="Your Service" Description="Your Service description"
                  Start="auto" Account="[SERVICECREDENTIALS_USERLOGIN]" Password="[SERVICECREDENTIALS_PASSWORD]"
                  ErrorControl="normal" Interactive="no" />
  <ServiceControl Id="StartService" Start="install" Stop="both" Remove="uninstall" Name="YourService" Wait="yes" />
</Component>
Другие вопросы по тегам