Guida scritta da DoKKiS per la community di www.pierotofy.it

• Creare un servizio con Visual Studio .NET:

• Cos'è un servizio?:

Un servizio, quando è attivo, permette di lanciare un'applicazione automaticamente non appena si è entrati nell' S.O. (sistema operativo). Sono spesso un servizio gli antivirus, i firewall, e tutte quelle applicazioni che si attivano automaticamente all'avvio.

• Come creare un progetto di servizio:

Come potete immaginare anche questa volta Vs.net ci mette a disposizione un tipo di progetto con cui creare in pochi passi il nostro servizio funzionante, non basterà solo il progetto ma anche il tools fornito da vs.net: installUtil.exe che potremmo utilizzare grazie al Prompt di Dos di vs.net (visualizzabile da start->vs.net2003->strumenti di vs.net->Prompt di Dos di vs.net). Apriamo ora vs.net e creiamo un nuovo progetto, file->nuovo->progetto->progetti di visual c#, selezionando il progetto servizio windows (che io chiamerò servizio).

• Come impostare il progetto:

Innanzi tutto clicchiamo 2 volte su Service.cs, si aprirà una schermata gialla, aggiungiamo il servizio cliccando col tasto destro sulla schermata e andando su aggiungi programma di installazione. Ci si aprirà ora una nuova schermata gialla con 2 componenti:
- serviceProcessInstaller1
- serviceInstaller1

Il serviceProcessInstaller1 ci permette di definire quale utente può far partire il servizio (Account, mettiamo LocalService), da menu proprietà è possibile scegliere queste opzione. Mentra il serviceInstaller1 ci permette di decidere il metodo di start del servizio (StartType) e il nome visualizzato nella consolle di gestione dei servizi (Service Name).

• Importare un nostro progetto che sarà avviato ogni volta che il servizio si attiverà:

La via più semplice è quella di importare il progetto, dalla soluzione fare tasto destro->aggiungi progetto esistente-> e da qui scegliete il progetto che volete che si avvii dal servizio, come esempio di nome userò un progetto chiamato Project. Ora andiamo sulle proprietà di Project e su tipo di output mettiamo: Libreria di classi. Ora sulle reference del progetto servizio facciamo aggiungi, andiamo su progetti e selezioniamo project e diamo OK, infine aggiungiamo un'altra reference, da .NET aggiungiamo System.Windows.Forms, e all'inizio del codice di service.cs mettiamo: using System.Windows.Forms e using Project. Ora andiamo nel codice di Service.cs, tasto destro->visualizza codice, e sulla funzione main dopo tutto il codice prima della } di chiusura main scriviamo:

Application.Run(new Form1());

(ricordatevi di togliere la funzione Main dal Project nel form1!!!)
nel mio caso in project ho un form chiamato Form1 in questo modo appena parte il servizio si apre il form del nostro progetto Project.

• Come installare e come disinstallare il servizio.

Apriamo il Prompt di Dos di vs.net (visualizzabile da start->vs.net2003->strumenti di vs.net->Prompt di Dos di vs.net) e andiamo nella cartella in cui abbiamo generato il progetto servizio. es:
'cd C:\Servizio\debug'
e digitiamo per:
- Installare il servizio -> installUtil.exe Servizio.exe
- Per disinstallare il servizio -> installUtil.exe /u Servizio.exe

• NB: Il file servizio.exe ora può essere utilizzato solo in questo modo, se lo si avvia cliccando 2 volte non parte!
• PS: Il servizio non parte proprio subito l'avvio di windows ma qualche minuto dopo, il motivo non lo so però basta che parte :P