WIX ServiceInstall - настройка службы для запуска под учетной записью NetworkService

Я пытаюсь создать установщик WIX, чтобы установить службу Windows для работы под учетной записью NetworkService и получаю сообщение об ошибке "Недостаточно прав доступа" во время установки.

Я нашел этот пост, где кто-то, похоже, испытывает ту же проблему, но никакого реального решения не было предложено:

http://n2.nabble.com/Re-WiX-users-Digest-Vol-40-Issue-129-td3782055.html

Я уверен, что кто-то, должно быть, достиг этого ранее и задавался вопросом, будут ли они достаточно любезны, чтобы поделиться фрагментом кода?

4 ответа

ПРИМЕЧАНИЕ. Приведенный ниже ответ относится только к более ранним сборкам WIX и Windows на момент постановки вопроса. Текущая версия учетных данных службы WIX будет работать, если вы установите собственный домен "NT AUTHORITY" и учетную запись "NetworkService" (сейчас места не требуется).


Оригинальный ответ:

Правильным именем пользователя является "NT Authority\Network Service", а не "NT Authority\NetworkService". Требуется место, тогда это работает.

Забавно, что по умолчанию "LocalSystem" работает напрямую с WIX 3.5, но для других хорошо известных учетных записей вы должны использовать префикс "NT Authority...", например, "LocalService" не работает и при непосредственном использовании.

т.е. исправить это с помощью:

Account = 'NT Authority \ Network Service'

Кажется, что несколько остатков ранее неудачной установки мешали мне удалить и переустановить с помощью Account="NT Authority\NetworkService". Все хорошо во Вселенной снова.

У меня был следующий фрагмент, работающий под Windows 8.1 FR и Windows 2012R2 ENU. Но используя NT AUTHORITY\NETWORK SERVICE не удалось с ошибкой недостаточных привилегий.

Таким образом, по крайней мере, в современных системах вы должны использовать NT AUTHORITY\NETWORKSERVICE как задокументировано в MSDN.

              <ServiceInstall Id="xserviceInstall" Name="$(var.xServiceid)" 
              DisplayName="$(var.xServiceid)" 
              Description="x service" Start="auto" Type="ownProcess"
              ErrorControl="ignore" 
              Account="NT AUTHORITY\NETWORKSERVICE" 
              Arguments="-w -N" Vital="yes" />

Я использовал customAction, чтобы найти правильные учетные данные пользователя или нет.

Если учетные данные пользователя совпадают с учетной записью на компьютере, который они хотят установить, я разрешу им перейти к следующему диалоговому окну (UI), иначе я покажу другой диалог, указывающий пользователю, что учетная запись не найдена.

Другие вопросы по тегам