Como iniciar um serviço com determinados parâmetros de início no Windows

15

Como inicio um serviço com determinados parâmetros? Em outra pergunta que encontrei

net start servicename blah

mas se eu tentar isso, net lançará um erro de sintaxe para mim.

O que estou fazendo de errado?

Edit: Para esclarecer o net start servicename funciona muito bem, mas eu preciso passar parâmetros para o serviço. Eu posso fazer isso manualmente em services.msc , preenchendo um parâmetro de início antes de iniciar o serviço. Mas como posso fazer isso de um script?

Outra edição: Desculpe, mas minha pergunta era enganosa . Nos meus testes, eu tinha muitos mais parâmetros e não é o /blah net start reclama. De fato, qualquer coisa que comece com uma barra é aceitável . Então net start servicename /blah funciona, net start servicename blah não funciona. Como preciso de net start servicename /foo bar , é o bar que é o problema.

    
por sbi 19.05.2010 / 15:10

5 respostas

27
sc start fooservice arg1 arg2 ...
    
por 19.05.2010 / 16:43
7

NET START não permitirá que você passe parâmetros arbitrários, tanto quanto eu sei (parece que eles têm que ser prefixados com um /), eu acredito que a maneira correta é modificar a chave de registro apropriada e parar / iniciar o serviço. Supondo que seu serviço personalizado é chamado MyService:

[HKLM\SYSTEM\CurrentControlSet\Services\MyService]
"ImagePath":C:\Projects\MyService\bin\MyService.exe Parameter1 Parameter2

Realmente, uma maneira melhor é armazenar sua configuração em algum lugar que o serviço saiba, como talvez o registro ou o sistema de arquivos, e ler os valores necessários. Como você pode ver, personalizar a linha de comando é um pouco mais doloroso do que deveria.

Se isto for por acaso um serviço desenvolvido em .NET, você pode criar n cópias do executável em seu sistema de arquivos, e cada um automaticamente obter os parâmetros do arquivo app.config apropriado. / p>

Parece que você pode ter ido longe demais da caixa do Win32. Como isso soa como desenvolvimento personalizado, qualquer uma das outras soluções oferecidas, embora talvez não seja o ideal, funcionará corretamente e será um caminho mais seguro.

    
por 19.05.2010 / 15:47
3

Você precisa de uma barra antes de cada parâmetro ao usar net start . Também certifique-se de citar os parâmetros que possuem espaços.

net start servicename /param0 /"param1 with spaces" /"/param2_has_slash"
    
por 19.03.2012 / 11:51
1

Você precisa usar o nome real do serviço como aparece no painel de controle, serviços. Se contiver espaços, você deverá colocar aspas ao redor do nome do serviço.

Para obter o nome real do serviço, basta digitar net start sem nenhum parâmetro no prompt de comando. Ele deve fornecer uma lista de todos os serviços em execução para que você possa obter o nome do serviço real. Então use apenas net start <servicename>

    
por 19.05.2010 / 15:31
0

Poderia a InstSrv e o SrvAny ajudarem nisso? Guia e links

    
por 19.05.2010 / 15:46