Не удается запустить службу Windows в учетной записи NetworkService

У меня есть реализация проекта службы Windows, которую я пытаюсь установить в качестве сетевого сервиса.

process = new ServiceProcessInstaller();
process.Account = ServiceAccount.NetworkService;

однако всякий раз, когда я пытаюсь запустить службу, я получаю:

System error 5 has occurred.

Access is denied.

Это происходит после запуска команды net start MyService в командной строке визуальной студии, которая, кстати, запущена как администратор.

Любая помощь в том, как заставить это работать? Спасибо.

Ответ 1

Я бы проверял, что учетная запись сетевой службы имеет разрешения для выполнения. Шаги для проверки:

  • В проводнике Windows перейдите в папку, содержащую двоичные файлы службы
  • Щелкните правой кнопкой мыши папку > Свойствa > вкладка "Безопасность" > "Изменить"
  • Добавить > "СЕТЕВОЕ ОБСЛУЖИВАНИЕ" > ОК
  • Дайте ему полный контроль (просто чтобы проверить, а затем уменьшить разрешения до его работы)

screenshot

Ответ 2

Возможно, ваш Net Start MyService не работает с повышенными привилегиями. Ваша команда требует (я считаю) административных привилегий.

Обновление

Не уверен, почему, но ваши привилегии на вашем сервисе странные. По умолчанию привилегии служб должны выглядеть так:

D:(A;CI;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)

ACE Type: ACCESS_ALLOWED_ACE_TYPE
Trustee: NT AUTHORITY\SYSTEM
AccessMask:
  ADS_RIGHT_DELETE
  ADS_RIGHT_READ_CONTROL
  ADS_RIGHT_WRITE_DAC
  ADS_RIGHT_WRITE_OWNER
  ADS_RIGHT_DS_CREATE_CHILD
  ADS_RIGHT_DS_DELETE_CHILD
  ADS_RIGHT_ACTRL_DS_LIST
  ADS_RIGHT_DS_SELF
  ADS_RIGHT_DS_READ_PROP
  ADS_RIGHT_DS_WRITE_PROP
  ADS_RIGHT_DS_DELETE_TREE
  ADS_RIGHT_DS_LIST_OBJECT
  ADS_RIGHT_DS_CONTROL_ACCESS

Однако ваш внешний вид выглядит следующим образом:

D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)

ACE Type: ACCESS_ALLOWED_ACE_TYPE
Trustee: NT AUTHORITY\SYSTEM
AccessMask:
  ADS_RIGHT_READ_CONTROL
  ADS_RIGHT_DS_CREATE_CHILD
  ADS_RIGHT_ACTRL_DS_LIST
  ADS_RIGHT_DS_SELF
  ADS_RIGHT_DS_READ_PROP
  ADS_RIGHT_DS_WRITE_PROP
  ADS_RIGHT_DS_DELETE_TREE
  ADS_RIGHT_DS_LIST_OBJECT
  ADS_RIGHT_DS_CONTROL_ACCESS

Я точно не знаю, как это получилось. Попробуйте удалить и переустановить?

Вы можете загрузить SddlParse (google it:), чтобы разобрать Язык описания дескриптора безопасности.

Ответ 3

Сообщение "Отказано в доступе" применяется к пользователю, пытающемуся запустить службу, а не к учетной записи, в которой выполняется служба.

Вы можете запустить сервис из:

  • апплет панели управления службами?
  • Приветствуется командная строка с повышенными правами (не из Visual Studio)?