Andrea Beggi

Funzione propria del genio è fornire idee ai cretini vent'anni dopo.

Creare un servizio

A T T E N Z I O N E ! Questo post ha piu' di sei mesi. Le informazioni contenute potrebbero non essere aggiornate.

A volte è utile/necessario far funzionare come servizio di sistema programmi che non sono stati creati con questa caratteristica.
I due casi più comuni sono: far partire un programma prima del login dell’utente, (e/o in assenza di esso), e programmi che richiedono privilegi amministrativi che non è opportuno concedere all’utente del PC.
In questo ci vengono in aiuto SRVANY.EXE e INSTSRV.EXE, entrambi presenti nel resource kit di Windows, e scaricabili a questo indirizzo.
Vanno copiati nella cartella C:\Windows\System32, o comunque nella System32 del vostro sistema.
Supponiamo che il nostro programma si chiami Rocket.exe, come prima cosa registriamolo come servizio di sistema con questo comando:
INSTSRV NomeServizio C:\Windows\System32\Srvany.exe, sostituendo a NomeServizio un nome adatto
Adesso editiamo la chiave di registro HKLM\System\Current Control Set\Services\NomeServizio\Parameters, ed aggiungiamo una stringa di tipo REG_SZ chiamata “Application”, il cui valore deve essere il path completo alla nostra applicazione. Ad esempio C:\Programmi\AcmeSoft\Rocket.exe
Fatto ciò facciamo partire il servizio, che a sua volta dovrebbe avviare il programma. Possiamo impostare le normali proprietà del servizio tramite la solita interfaccia di gestione. In alcuni casi potrebbe essere necessario abilitare l’interazione col desktop.

27 Commenti

Mr. T | #

Con Windows XP e 2003 è presente anche il programma SC.EXE con cui si possono creare/gestire/interrogare/cancellare i servizi. Tra le cose interessanti c’è anche la possibilità di farlo su un sistema remoto (a patto avviamente di avere i diritti ammistrativi). Per la sintassi si puo fare riferimento all’help in linea di Windows cercando SC, oppure con il solito SC.EXE /? dal prompt dei comandi.

Ciao,
Mr. T

marco | #

per favore, forse sono io che non ho capito, ho la necessità di far partire un programma che si chiama Argo Mail Server in versione freeware prima del login dell’amministratore del server, ho seguito i tuoi/vostri consigli ma il problema non riesco a risolverlo, in pratica mi compare un messaggio se cerco di avviare il servizio che dice che sia avvia ma si interrompe immediatamente perchè “Alcuni servizi si interrompono automaticamente se non vi sono operazioni da esegurire..
che significa?

Robbie Mastro | #

Ciao Marco. ho notato che l’errore da te descritto si ha nel momento in cui non esegui il punto “Adesso editiamo la chiave di registro HKLM\System\Current Control Set\Services\NomeServizio\Parameters, ed aggiungiamo una stringa di tipo REG_SZ chiamata “Application”, il cui valore deve essere il path completo alla nostra applicazione. Ad esempio C:\Programmi\AcmeSoft\Rocket.exe” oppure sbagli il nome dell’exe o è nullo. non so se ti può essere d’aiuto. Ciao

Bisco | #

Grazie! E’ un ottimo aiuto!

Fabrizio | #

Ciao, è possibile creare un servizio collegando un Cmd e non un exe? stoc ercando di far partire in automatico e senza logon uno script per la apertura di 2 DB oracle che a causa di un problema sull ISCSI di mamma Microsoft mi da problemi al riavvio della macchina…. Purtroppo il servizio che creo mi da un errore 1053 che è identificabile da questa “soluzione”…http://support.microsoft.com/kb/839174/

ma non riesco a capire esattamente come sistemarlo..

grazie

Fabrizio Ziberna | #

Complimenti: in italiano !!, preciso e dettagliato: è la prima volta che scrivo un commento dopo 22 anni che “smanetto” !

mioonline | #

io qualunque servizio creo mi da l’errore 1053 al momento dell’avvio del servizio
..ho provato a far partire diversi programmi come servizio e il risultato è lo stesso..

cosa curiosa è il fatto ke il programma prima parte e funziona, poi da l’errore e il programma si kiude
nn so do metteme le mani !!!

Marco | #

Ciao a tutti, vi segnalo un problema che ho con srvany. Praticamente l’ho utilizzato per impostare un’applicazione java scritta da me come un servizio di windows server 2003. A volte (senza errori lato java) capita che il servizio risulti ATTIVO ma che in effetti il processo java sotto sia bloccato. Visto che non ho trovato errori nel codice java mi chiedo se per caso sapete se questo puo’ essere un problema di srvany che in alcuni casi vede un servizio SU mentre quello sta’ GIU!!! grazie mille.

Max | #

Anche io qualunque servizio creo mi da l’errore 1053 al momento dell’avvio del servizio
..ho provato a far partire diversi programmi come servizio e il risultato è lo stesso..
potete aiutarmi?

Luca's | #

mi son sempre domandato come posso realizzare un programma che appaia come SYSTEM sul task manager.sto sviluppando un sistema di gestione per applicazioni in Windows. Vi e’ un modo per farlo SOLO operando via chiavi di registro di Windows e non utilizzando terzi programmi?

Grazie infinite!

simone | #

salve a tutti..è possibile impostare automaticamente una priorità alta al processo che viene generato?

aldo | #

Possibile che nessuno sappia rispondere a qualcosa?

Pierluigi | #

Dire che sei un punto di riferimento per molti sistemisti è dire poco.

Ciao

Davide | #

Ciao, ho installato su un server Windows SBS 2003 R2 L’Oracle 10g, tutto Ok se non fosse che il servizio Oracle della console (OracleDbConsoleOracle10) quando prova a partire mi da l’errore 1053 (Il servizio non ha risposto alla richiesta di avvio o controllo in un modo tempestivo
), come posso risolvere il problema ???
Qualcuno ha qualche idea ???
Ciao.

buffalo_soldier | #

Ciao,
io ho risolto disinstallando winzozz e usando i runlevel di linux…
moooooolto più comodo, facile, e sicuro…
😉

antonio | #

caro amico nella mia asl c’è una parvenza di servizio ma le are funzionali non cisono poichè devono essere date achi dice il sindacato senza rispettare le normative e leggi che noi professionisti abbiamo conquistato

Claudio | #

Riguardo al problema del servizio che sia avvia ma si interrompe immediatamente col messaggio “Alcuni servizi si interrompono automaticamente se non vi sono operazioni da esegurire”, è lo stesso messaggio che si ottiene non creando affatto la nuova chiave, quindi evidentemente l’abbiamo creata nel posto sbagliato.

Leggete dettagliatamente quello che ha scritto Andrea: la nuova stringa va creata in HKLM\System\Current Control Set\Services\NomeServizio\Parameters, ma attenzione perché la chiave “Parameters” non esiste ancora.

Per tale motivo, l’operazione si svolge in 2 step:

1) Creare la chiave di registro “Parameters” sotto HKLM\System\Current Control Set\Services\NomeServizio\

2) Creare la stringa di tipo REG_SZ chiamata “Application”, con il path completo alla nostra applicazione. Se il path contiene spazi l’indirizzo completo va racchiuso tra apici.

Ho fatto così e adesso funziona.
Spero di far risparmiare a qualcuno il tempo che ho perso oggi pomeriggio per capire dove stava il problema.

Claudio

lino | #

grazie!

tomgion | #

Su Vista e Windows 7 so che non da l’autorizzazione per creare delle chiavi di registro in HKLM.
Come si può risolvere il problema???

Andrea | #

salve vorrei sapere qualche altro chiarimento su questa parte

HKLM\System\Current Control Set\Services\NomeServizio\Parameters

perchè non funziona come comando

grazie

Andrea | #

cioè vorrei sapere come si crea la chiave e la stringa da dos

andyzzy | #

sono fermo al comando instsrv, quando gli passo il nome del servizio da creare e il percorso al file srvany.exe mi restituisce
pure i file li ho copiati e sono presenti nella cartella windows32 !
ho istallato win 7 ultimate 64.

andyzzy | #

quando gli passo il nome del servizio da creare e il percorso al file srvany.exe mi restituisce Unable to find the file at the given path.

giorgio | #

cioè ragazzi ma sapete leggere *_*

bellaaaa | #

quando cerco di creare il servizio mi dice che INSTSRV non è riconosciuto come comando interno o esterno, un programma eseguibile o un file batch. (ho capito che “INSTSRV NomeServizio C:\Windows\System32\Srvany.exe” si deve inserire nel cmd, se ho sbaiato mi dite dove va messo?

fabrizio | #

Salva ho un problema con windows server 2008 ho sto cercando di far partire un applicazione come servizio creato con sc.exe quando parte mi da error 5 accesso negato