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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
38
0
31 296
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

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

Я хочу поделиться этой замечательной короткой статьей, в которой объясняются различия между LocalSystem, LocalService и NetworkService: windowsitpro.com/article/services/…

Ronnie Overby 16.01.2012 20:42

Вас просят указать учетную запись для запуска службы или права на ее установку? Во-вторых, установка от имени администратора должна предотвратить это. Во-первых, вы должны добавить 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);
}

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

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