Я написал простую службу Windows на C #. Если она установлена с помощью installutil
, будет ли услуга доступна для всех пользователей системы?
В случае серверной операционной системы, под какой учетной записью следует установить службу, чтобы она запускалась автоматически при запуске сервера?
Пожалуйста, пролейте свет на это.
Да. Обычные службы Windows по своей сути глобальны; не имеет значения, какая учетная запись использовалась для установки службы. Насколько мне известно, Windows даже не записывает эту информацию.
Для установки службы у вас должны быть права администратора.
Чтобы настроить автоматический запуск службы с Windows, настройте тип запуска службы соответствующим образом. См. Шаг 5 в Как: добавить установщиков в приложение-службу.
Дополнение: если служба работает под учетной записью домена, в некоторых ситуациях может потребоваться настроить службу для отложенного запуска. Этот ответ объясняет, как это сделать в .NET. Если служба работает нормально при запуске вручную, но при автоматическом запуске выдает ошибки типа «неверное имя пользователя или пароль», может помочь ее настройка для отложенного запуска. Я еще не уверен в основной причине проблемы.
(Если служба использует SERVICE_USER_OWN_PROCESS
или SERVICE_USER_SHARE_PROCESS
type, то для каждого пользователя, вошедшего в систему, существуют отдельные экземпляры службы, и поведение службы такого типа не задокументировано должным образом. Однако я считаю, что ответ тот же: установка по-прежнему глобальная, и по-прежнему не имеет значения, какая учетная запись устанавливает службу.)