Вопрос

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

Это было полезно?

Решение

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

Другие советы

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

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

Выше, используя InstallUtil или SC, мне нравится идея создания САМОСТОЯТЕЛЬНЫЙ МОНТАЖНИК:

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

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

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

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

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

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

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

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);
}

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top