sviluppo-web-qa.it

Come creare un servizio che esegue un file .bat su Windows 2008 Server?

Ho creato il servizio usando

sc create myService binpath=myservice.bat

Ma quando lo avvio, non riesce con il seguente messaggio di errore:

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

Su Win2k3 ho usato srvany.exe dal Resource kit, ma non esiste un kit di risorse per win2k8. Per ora ho installato srvany.exe sul mio computer, ma non credo sia il modo migliore per farlo.

Grazie!

21
abyx

Ovviamente non è possibile eseguire un servizio del genere. Hai provato a usare srvany nel server 2008? Per quanto ne so non esiste una versione "ufficiale" di srvany per s2k8, ma puoi sempre provare, no?

EDIT: Oh, ho dimenticato! Utilizziamo anche FireDaemon per eseguire applicazioni non di servizio come servizi. Tuttavia, non è gratuito e la sua funzionalità è un po 'troppo per le tue esigenze.

9
shylent

Utilizzare NSSM per eseguire un .BAT o qualsiasi vecchio file .EXE come servizio. È quasi un sostituto di SRVANY ed è un'applicazione senza fronzoli.

http://iain.cx/src/nssm/

Ho avuto lo stesso problema, e NSSM era l'unica utility che funzionava.

24

Utilizziamo tilità di pianificazione per eseguire l'attività all'avvio del computer (indipendentemente dal fatto che un utente abbia effettuato l'accesso o meno)

8
Korayem

Non puoi semplicemente eseguire un file .BAT o qualsiasi vecchio file .EXE come servizio. I servizi di Windows non ti funzionano. Puoi utilizzare un'utilità come il gestore del servizio non succhiante (NSSM) o l'utilità SRVANY non libera di Microsoft per eseguire un programma arbitrario come servizio, ma potresti scoprire che non ottieni molto " aggraziato "comportamento di arresto.

7
Evan Anderson

Il comando SC aggiunge solo le voci di registro richieste per un servizio - se il file specificato non è un servizio valido, non lo trasformerà in uno.

3
Whisk

prova questo ... ha funzionato per me ..

sc create ServiceTest binpath= "C:\Windows\System32\cmd.exe /C C:\ServiceTest\Jenkins-Slave.bat"
2
Kushal Gangan

da: questo post sui forum technet: http://social.technet.Microsoft.com/Forums/en-US/winserverMigration/thread/98a97aee-c62b-4683-94ab-3777899cf7de/

Ecco cosa fare ...

Al momento della pubblicazione, non sono disponibili strumenti del Resource Kit di Windows Server 2008, quindi procurarsi "srvany.exe" dagli "Strumenti del Resource Kit di Windows Server 2003" e copiarlo in una posizione adatta sul server Win2008 (ad es. C:\Windows\System32 \). Usa "sc" per creare un nuovo servizio che avvia "srvany" (es. Sc create MyService binPath = C:\Windows\System32\srvany.exe DisplayName = "Il mio servizio personalizzato") Usando RegEdit: crea una chiave "Parametri" per il tuo servizio (ad es. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyService\Paramaters \) Utilizzando RegEdit: all'interno della chiave "Parametri" appena creata, crea un valore stringa chiamato "Applicazione" e inserisci il percorso completo dell'applicazione che desideri eseguire come un servizio. (Non sono richieste virgolette.)

E così dovrebbe andare.

Nota: alcune applicazioni memorizzano le loro impostazioni in un Hive utente, non in HKEY_LOCAL_MACHINE, quindi sarà necessario eseguire l'applicazione per configurarlo, quindi configurare il servizio per essere eseguito come quell'utente.

2
user1977194

ho usato schtasks di Windows.

puoi fare riferimento a questo. https://technet.Microsoft.com/en-us/library/cc725744.aspx#BKMK_hours

0
Yit Ming

Ho trovato altre due opzioni che non ti faranno raggiungere il tuo portafoglio.

Puoi avere sc launch srvany che quindi punta al tuo programma. (c'è un post sul forum a cui non posso collegarmi perché non ho abbastanza rappresentante qui, anche se lo faccio su StackOverflow - grumble)

Ecco i passaggi utilizzati dal poster originale:

  1. Usa sc per creare un nuovo servizio che avvia srvany (ad esempio sc create MyService binPath=C:\Windows\System32\srvany.exe DisplayName="My Custom Service")
  2. Usando RegEdit: crea una chiave Parameters per il tuo servizio (ad es. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyService\Parameters\)
  3. Usando RegEdit: all'interno della chiave Parameters appena creata, crea un valore stringa chiamato Application e inserisci il percorso completo dell'applicazione che desideri eseguire come servizio. (Non sono richieste virgolette.)

Se sembra un po 'un trucco , puoi creare un servizio .NET per avviare il tuo processo. Se vuoi saltare alcuni passaggi, ecco un servizio .NET open source in grado di avviare processi generici:

http://www.codeproject.com/KB/system/xyntservice.aspx

Modificalo in base alle tue esigenze, ma farà la maggior parte di ciò che vuoi fuori dalla scatola.

0
databyte

Mi sono imbattuto in questa cosa. Ecco lo strumento chiamato Bat_To_Exe_Converter. È molto semplice convertire qualsiasi file .bat in file .exe. Provalo. Scarica prima il downloader e scaricherà automaticamente Bat_To_Exe_Converter. Mi ha davvero aiutato a creare un servizio che esegue il mio file .bat tramite .exe. http://download.cnet.com/Bat-To-Exe-Converter/3001-2069_4-10555897.html?spi=eae5ab48292cc101b5f0ec370cf99ad

0
Ilya