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), иначе я покажу другой диалог, указывающий пользователю, что учетная запись не найдена.