Установка службы .NET с помощью InstallUtil - PullRequest
37 голосов
/ 28 августа 2008

Я пытаюсь установить службу .NET, которую я написал. В соответствии с рекомендациями MSDN я использую InstallUtil. Но я упустил, как установить пользователя службы по умолчанию в командной строке или даже в самой службе. Теперь, когда InstallUtil запущен, он отобразит диалоговое окно, запрашивающее у пользователя учетные данные для пользователя. Я пытаюсь интегрировать установку службы в более крупную установку, и мне нужно, чтобы установка службы молчала.

Ответы [ 5 ]

44 голосов
/ 28 августа 2008

Я думаю, что, возможно, нашел это. В самой службе автоматически созданный компонент ServiceProcessInstaller имеет свойство «Account», для которого можно установить «LocalService», «LocalSystem», «NetworkService» или «User». По умолчанию это был «Пользователь», который должен был отображать подсказку.

4 голосов
/ 17 июля 2009

Как вы заметили, Карим, свойство "Account" - это решение здесь. Для тех, кто заинтересован в различиях между контекстами безопасности, установленными этим свойством:

http://msdn.microsoft.com/en-us/library/system.serviceprocess.serviceaccount.aspx

Помимо использования InstallUtil или SC, мне нравится идея создания САМОУСТАНОВИТЕЛЬ :

http://www.codeproject.com/KB/dotnet/WinSvcSelfInstaller.aspx

, хотя я нашел это в документации .Net 1.1:

Тип ManagedInstallerClass поддерживает .NET Framework инфраструктура и не предназначена для использовать прямо из вашего кода.

3 голосов
/ 10 сентября 2008

Также имейте в виду SC.exe util , который не требует установки Visual Studio. Вы можете просто скопировать этот exe-файл на сервер, на котором вы хотите создать службу, или даже запустить его удаленно . Используйте параметр obj , чтобы указать пользователя.

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

0 голосов
/ 03 июня 2018

InstallUtil имеет переключатели командной строки, которые могут избежать запросов при использовании «User» в качестве типа учетной записи. /username и /password используются для настройки учетной записи во время установки.

Использование:

installutil.exe /username=user /password=password yourservice.exe

Вам может потребоваться файл конфигурации, в котором установщик может прочитать и установить службу.

Для этого добавьте установщик службы в ваш проект и перегрузите метод установки. В этом методе установите имя пользователя и пароль:

public override void Install(IDictionary stateSaver)
{
    serviceProcessInstaller1.Username="<username>";
    serviceProcessInstaller1.Password="<password>";
    base.Install(stateSaver);
}

Если вы попытаетесь установить имя пользователя и пароль в конструкторе, эти значения будут перезаписаны, поэтому убедитесь, что вы переопределили «Install», чтобы сделать это.

0 голосов
/ 28 августа 2008

Вас просят указать учетную запись для запуска службы или права на установку службы? Во-вторых, установка в качестве администратора должна предотвратить это. Для начала вам нужно добавить ServiceProcessInstaller в ваш установщик.

Я полагаю, что область проектирования для службы имеет ссылку для создания установщика проекта. В этом конструкторе вы можете добавить установщик процесса типа System.ServiceProcess.ServiceProcessInstaller. Свойства этого объекта позволяют настроить учетную запись для использования в службе.

...