Como reiniciar um serviço a partir do CMD

1

Eu tenho um script python que iniciará um serviço bluetooth por meio do registro, substituindo o valor Start por manual . O que preciso fazer é reiniciar o serviço a partir do CMD. Agora sei que posso fazer isso digitando: net start "Bluetooth Support Service" no entanto, quando faço isso depois de executar meu script, ele não encontra o serviço e gera isso:

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.

Qual é a maneira correta de reiniciar um serviço depois que ele foi reativado?

    
por 13aal 13.04.2017 / 20:07

1 resposta

2

Definir o valor no Registro não atualiza as informações na memória do Gerenciador de Controle de Serviço. O método suportado é usar a API do SCM ou um programa de linha de comando para você:

sc config bthserv start= demand

Observe que o nome do serviço, bthserv , é o ID do serviço, em oposição ao nome de exibição. Você pode ver o ID de um determinado serviço em sua janela de propriedades no snap-in Serviços do MMC ( services.msc ).

Você poderá então iniciar o serviço normalmente.

Bizarramente, embora a execução manual do Registro faça os Serviços mostrarem o novo estado alterado, o serviço ainda é efetivamente desativado. Eu testei isso e descobri que ele só será realmente ativado usando o método suportado ou possivelmente após uma reinicialização. Como o seu script já está usando um utilitário do Windows ( net ), o uso de sc também não reduzirá a portabilidade.

    
por 13.04.2017 / 20:58