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





Думаю, я нашел это. В самой службе автоматически созданный компонент ServiceProcessInstaller имеет свойство «Учетная запись», для которого можно задать значение «LocalService», «LocalSystem», «NetworkService» или «Пользователь». По умолчанию был выбран «Пользователь», который должен был отображать подсказку.
Вас просят указать учетную запись для запуска службы или права на ее установку? Во-вторых, установка от имени администратора должна предотвратить это. Во-первых, вы должны добавить ServiceProcessInstaller в свой установщик.
Я считаю, что в области разработки для службы есть ссылка для создания установщика проекта. В этом конструкторе вы можете добавить установщик процесса типа System.ServiceProcess.ServiceProcessInstaller. Свойства этого объекта позволяют настроить учетную запись для использования в службе.
Также имейте в виду, что Утилита SC.exe не требует установки Visual Studio. Вы можете просто скопировать этот exe на сервер, на котором хотите создать службу, или даже запустить его удаленно. Используйте параметр объект, чтобы указать пользователя.
Видимо, для этого инструмента есть графический интерфейс, но я им не пользовался.
Как вы заметили, Карим, здесь решение - свойство «Учетная запись». Для тех, кто интересуется различиями между контекстами безопасности, задаваемыми этим свойством:
http://msdn.microsoft.com/en-us/library/system.serviceprocess.serviceaccount.aspx
Выше, используя InstallUtil или SC, мне нравится идея создания САМОУСТАНОВЩИК:
http://www.codeproject.com/KB/dotnet/WinSvcSelfInstaller.aspx
хотя я нашел это в документации .Net 1.1:
The ManagedInstallerClass type supports the .NET Framework infrastructure and is not intended to be used directly from your code.
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);
}
Если вы попытаетесь установить имя пользователя и пароль в конструкторе, эти значения будут перезаписаны, поэтому убедитесь, что вы переопределили «Установить», чтобы сделать это.
Я хочу поделиться этой замечательной короткой статьей, в которой объясняются различия между LocalSystem, LocalService и NetworkService: windowsitpro.com/article/services/…