2012-03-05 2 views
6

У меня есть служба Windows, которая должна работать под учетной записью домена , указанной пользователем во время установки.Позвольте пользователю указать, в какой учетной записи запускается служба

Как это возможно с установщиком Wix (т. Е. Запрашивать у пользователя учетную запись + пароль, который должна использовать служба)?

фон

Моя служба должна иметь доступ к сетевому ресурсу и LocalSystem не имеет соответствующих прав, поэтому я хочу использовать существующую учетную запись пользователя домена.

ответ

7

ServiceInstall элемент - ваш друг здесь. Он содержит атрибуты Account and Password. Так, автор несколько элементов управления в диалоговом окне вашего:

<Control Type="Edit" Property="ACCOUNT" ... /> 
<Control Type="Edit" Property="PASSWORD" Password="Yes" ... /> 

И использовать эти свойства, чтобы инструктировать ServiceInstall:

<ServiceInstall Id="..." Account="[ACCOUNT]" Password="[PASSWORD]" Type="ownProcess" ... /> 

Надеется, что это помогает.

+0

Я думаю, что я понимаю, что вы имеете в виду: я должен добавить свой собственный диалог с установщиком, который запрашивает у пользователя счетов + пароль. Я могу использовать эти значения в элементе 'ServiceInstall' для настройки учетной записи. Верный? Нет стандартного готового диалога, который я могу использовать? – nabulke

+0

Исправить. Нет, нет стандартного диалога, насколько я знаю, но его должно быть довольно просто создать. –

+0

Благодарим за помощь. – nabulke

3

Необходимо иметь имя учетной записи и пароль для пользователя, которому вы хотите запустить службу. Я смог выполнить это, добавив пользовательский интерфейс к моему установщику с запросом имени пользователя и пароля, а затем используя предоставленные значения для атрибутов «Учетная запись» и «Пароль» в элементе 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> 

для получения дополнительной информации: http://skullpsgblog.blogspot.in/2015/11/in-wix-setting-services-user-account.html

Смежные вопросы