1

У меня есть сценарий Python, который запускает службу Bluetooth через реестр, заменяя значение Start manual мне нужно перезапустить службу из CMD. Теперь я знаю, что могу сделать это, набрав: net start "Bluetooth Support Service" однако, когда я делаю это после запуска сценария, он не находит службу и выдает следующее:

C:\Users\z-perkins-thomas\Documents\bin\python\fix-dap>net start "Bluetooth Support Service"

System error 1058 has occurred.

The service cannot be started, either because it is disabled or because it has no enabled devices associated with it.

Как правильно перезапустить службу после ее повторного включения?

1 ответ1

2

Установка значения в Реестре не будет обновлять информацию в диспетчере управления службами в памяти. Поддерживаемый метод заключается в использовании API SCM или программы командной строки, которая делает это за вас:

sc config bthserv start= demand

Обратите внимание, что имя службы bthserv - это идентификатор службы, а не ее отображаемое имя. Вы можете увидеть идентификатор данной службы в окне ее свойств в оснастке MMC Services (services.msc).

После этого вы сможете запустить службу в обычном режиме.

Как ни странно, хотя ручной взлом Реестра заставляет Сервисы показывать новое измененное состояние, сервис по-прежнему эффективно отключен. Я проверил это и обнаружил, что он станет действительно активным только с помощью поддерживаемого метода или, возможно, после перезагрузки. Поскольку ваш сценарий уже использует утилиту Windows (net), использование sc также не уменьшит его переносимость.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .