Я пытаюсь установить службу .NET, которую написал. В соответствии с рекомендациями MSDN я использую InstallUtil. Но я упустил возможность установить пользователя службы по умолчанию в командной строке или даже в самой службе. Теперь, когда InstallUtil запущен, он отобразит диалоговое окно, запрашивающее у пользователя учетные данные для пользователя. Я пытаюсь интегрировать установку службы в более крупную установку, и мне нужно, чтобы установка службы оставалась без звука.
Установка службы .NET с помощью InstallUtil
Ответы (5)
Думаю, я нашел это. В самой службе автоматически созданный компонент ServiceProcessInstaller имеет свойство «Учетная запись», для которого можно задать значение «LocalService», «LocalSystem», «NetworkService» или «Пользователь». По умолчанию был выбран «Пользователь», который должен отображать подсказку.
Как вы заметили, Карим, здесь решение - свойство «Учетная запись». Для тех, кто интересуется различиями между контекстами безопасности, задаваемыми этим свойством:
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 и не предназначен для использования непосредственно из вашего кода.
Также помните о утилите SC.exe, которая не требуется установка Visual Studio. Вы можете просто скопировать этот исполняемый файл на сервер, на котором хотите создать службу, или даже запустить его удаленно. Используйте параметр obj, чтобы указать пользователя.
По всей видимости, для этого инструмента есть графический интерфейс, но я им не пользовался.
Вас просят указать учетную запись для запуска службы или права на ее установку? Во-вторых, установка от имени администратора должна предотвратить это. Во-первых, вы должны добавить ServiceProcessInstaller в свой установщик.
Я считаю, что в области разработки для службы есть ссылка для создания установщика проекта. В этом конструкторе вы можете добавить установщик процесса типа System.ServiceProcess.ServiceProcessInstaller. Свойства этого объекта позволяют настроить учетную запись для использования в службе.
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);
}
Если вы попытаетесь установить имя пользователя и пароль в конструкторе, эти значения будут перезаписаны, поэтому убедитесь, что вы переопределили «Установить», чтобы сделать это.