sc start fooservice arg1 arg2 ...
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.
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.
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"
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>
Poderia a InstSrv e o SrvAny ajudarem nisso? Guia e links
Tags windows windows-service