Como criar um serviço executando um arquivo .bat no Windows 2008 Server?

20

Eu criei o serviço usando

sc create myService binpath=myservice.bat

Mas quando eu começo, ele falha com a seguinte mensagem de erro:

[SC] StartService FAILED 1053:
    The service did not respond to the start or control request in a timely fashion.

No Win2k3 eu usei o srvany.exe do kit de recursos, mas não há nenhum kit de recursos para o win2k8. Por enquanto eu instalei o srvany.exe na minha máquina, mas não acho que seja a melhor maneira de fazê-lo.

Obrigado!

    
por abyx 16.08.2009 / 08:53

10 respostas

9

Claro que você não pode executar um serviço como esse. Você tentou usar srvany no servidor 2008? Tanto quanto sei, não existe uma versão 'oficial' do srvany para s2k8, mas você pode sempre tentar, não é?

EDIT: Ah, eu esqueci! Também usamos o FireDaemon para executar aplicativos que não são serviços como serviços. Porém, não é gratuito e sua funcionalidade é demais para suas necessidades.

    
por 16.08.2009 / 09:48
24

Use o NSSM para executar um .BAT ou qualquer arquivo .EXE antigo como um serviço. É quase um substituto para o SRVANY e é uma aplicação sem frescuras e sem problemas.

link

Eu tive o mesmo problema que você e o NSSM foi o único utilitário que funcionou.

    
por 20.08.2009 / 06:04
8

Usamos o Agendador de Tarefas para executar tarefas sempre que o computador é iniciado (independentemente de um usuário estar logado ou não)

    
por 03.04.2012 / 12:58
7

Você não pode simplesmente executar um arquivo .BAT ou qualquer arquivo .EXE antigo como um serviço. Serviços do Windows não funcionam com você. Você pode usar um utilitário como o Gerenciador de serviços não-sugadores (NSSM) ou o utilitário SRVANY não-livre da Microsoft para executar um programa arbitrário como um serviço, mas você pode achar que não tem um comportamento de parada muito "gracioso".

    
por 17.08.2009 / 05:43
3

O comando SC apenas adiciona as entradas de registro necessárias para um serviço - se o arquivo que você especificar não for um exe de serviço válido, ele não o transformará em um.

    
por 16.08.2009 / 09:56
2

de: este post em fóruns de technet: http://social.technet.microsoft.com/Forums/pt-BR/winserverMigration/thread/98a97aee-c62b-4683-94ab-3777899cf7de/

Veja o que fazer ...

No momento desta publicação, não há Ferramentas do Windows Server 2008 Resource Kit, portanto, obtenha o "srvany.exe" do "Windows Server 2003 Resource Kit Tools" e copie-o para um local adequado no servidor Win2008 ( Por exemplo, C: \ Windows \ System32 \). Use "sc" para criar um novo serviço que inicie "srvany" (por exemplo, criar scor MyService binPath = C: \ Windows \ System32 \ srvany.exe DisplayName="Meu Serviço Personalizado") Usando o RegEdit: crie uma chave "Parâmetros" para o seu serviço (por exemplo, HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ MyService \ Paramaters \) Usando o RegEdit: dentro da chave "Parameters" recém-criada, crie um valor de string chamado "Application" e digite o caminho completo para o aplicativo que você deseja executar como um serviço. (Não são necessárias cotações.)

E isso deve acontecer.

Nota: alguns aplicativos armazenam suas configurações em uma seção do usuário, não sob HKEY_LOCAL_MACHINE, portanto, será necessário executar o aplicativo para configurá-lo e, em seguida, configurar o serviço para ser executado como esse usuário.

    
por 15.01.2013 / 12:51
2

tente isso ... funcionou para mim ...

sc create ServiceTest binpath= "C:\Windows\System32\cmd.exe /C C:\ServiceTest\Jenkins-Slave.bat"
    
por 20.10.2014 / 07:47
0

Eu tropecei nessa coisa. Aqui está a ferramenta chamada Bat_To_Exe_Converter. É muito fácil converter qualquer arquivo .bat em arquivos .exe. Tente. Baixe o downloader primeiro e ele irá baixar o Bat_To_Exe_Converter automaticamente. Isso realmente me ajudou a criar um serviço que executa meu arquivo .bat através de .exe. link

    
por 08.07.2013 / 19:06
0

eu usei o schtasks do Windows.

você pode se referir a isso. link

    
por 14.10.2015 / 12:29
0

Eu encontrei duas outras opções que você não terá para pegar sua carteira.

Você pode ter sc launch srvany , que aponta para seu programa. (há uma postagem no fórum que eu não consigo linkar porque não tenho representante suficiente aqui, no StackOverflow - resmungar)

Aqui estão os passos que o pôster original usou:

  1. Use sc para criar um novo serviço que lança srvany (por exemplo, sc create MyService binPath=C:\Windows\System32\srvany.exe DisplayName="My Custom Service" )
  2. Usando o RegEdit: crie uma chave Parameters para seu serviço (por exemplo, HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyService\Parameters\ )
  3. Usando o RegEdit: dentro da chave Parameters criada recentemente, crie um valor de string chamado Application e insira o caminho completo para o aplicativo que você deseja executar como um serviço. (Não são necessárias cotações.)

Se isso parecer um pouco como um hack , você pode criar um serviço .NET para iniciar seu processo. Se você quiser pular algumas etapas, aqui está um serviço .NET de código aberto que pode iniciar processos genéricos:

link

Ajuste-o de acordo com as suas necessidades, mas ele fará o que você quiser imediatamente.

    
por 25.08.2010 / 00:08