Установка службы .NET с помощью InstallUtil

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


person Karim    schedule 28.08.2008    source источник


Ответы (5)


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

person Karim    schedule 28.08.2008
comment
Я хочу поделиться этой замечательной короткой статьей, в которой объясняются различия между LocalSystem, LocalService и NetworkService: windowsitpro.com/article/services/ - person Ronnie Overby; 16.01.2012

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

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 и не предназначен для использования непосредственно из вашего кода.

person Aoi Karasu    schedule 16.07.2009

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

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

person Craig Tyler    schedule 10.09.2008

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

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

person Community    schedule 28.08.2008

InstallUtil имеет параметры командной строки, которые позволяют избежать запросов при использовании «Пользователь» в качестве типа учетной записи. /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);
}

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

person D. Lockett    schedule 02.06.2018