Не удается запустить службу 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)?