Gennaio 15, 2022

Creazione di un servizio Windows in VB.NET

Ambiente:. NET, Visual Basic

Introduzione

Si desidera scrivere un’applicazione che monitora costantemente alcuni file, crea un registro o qualsiasi altra cosa e uno che viene eseguito costantemente in background mentre la macchina è impegnata a fare qualcos’altro. Il modo migliore per farlo era eseguire un’applicazione Windows in modo continuo o ad intervalli regolari con l’uso dello scheduler di Windows. Ma c’era un grande svantaggio: qualcuno doveva accedere al sistema per avviare questa applicazione.

Questo non è più un problema perché il modo migliore per fare tutto questo è creare un servizio Windows per Windows 2000/Windows NT.

Che cos’è il servizio Windows (precedentemente chiamato Servizio NT)?

La funzione principale di un servizio Windows è quella di eseguire un’applicazione in background. Alcune cose che li rendono diversi da un’applicazione Windows sono che un servizio di Windows si avvia prima che qualsiasi utente accede al sistema(se è stato impostato per iniziare all’avvio). Il servizio può essere impostato in modo tale da richiedere all’utente di avviarlo manualmente.

Inoltre, il servizio Windows ha un proprio processo; quindi, funziona in modo molto efficiente. Normalmente, un servizio Windows non avrà un’interfaccia utente per il semplice motivo che può essere eseguito anche se nessuno è connesso al sistema. Questa non è una regola; si può ancora avere un servizio di Windows con un’interfaccia utente.

In Windows 2000, è possibile visualizzare tutti i servizi in esecuzione sul computer aprendo Pannello di controllo, Strumenti di amministrazione e quindi facendo clic su Servizi.

Creazione di un servizio Windows in VB.NET

Prima di VB.NET, la creazione di un servizio di Windows è stato un sacco di lavoro. Dovevi usare una procedura a livello di sistema che non era molto facile, ma grazie a VB.NET questo è diventato molto facile. Ora impareremo come creare un servizio di Windows.

Dovresti sapere alcune cose prima di immergerci. Il servizio Windows non è disponibile in Windows 95, 98 o ME. È necessario disporre di Windows NT o Windows 2000 per eseguire i servizi.

Il vantaggio dell’utilizzo di.NET è che il framework incorpora tutte le classi. Questo ci aiuterà a creare, installare e controllare il servizio di Windows.

Apri Visual Studio .NET, creare un nuovo progetto di servizio di Windows, che chiameremo MyService, e quindi fare clic su OK.

Aggiungere il controllo del timer dalla barra degli strumenti nella scheda Componenti. Nella finestra Proprietà di Timer1, modificare la proprietà Interval su 10000, ovvero 10 secondi.

Il codice sorgente

Fare doppio clic sul controllo Timer1 per aprire una finestra di codice per Timer1_Elapsed e digitare il seguente codice. (Questo codice deve essere eseguito ogni 10 secondi.)

 Dim MyLog As New EventLog() ' create a new event log ' Check if the the Event Log Exists If Not MyLog.SourceExists("MyService") Then MyLog.CreateEventSource("MyService", "Myservice Log") ' Create Log End If MyLog.Source = "MyService" ' Write to the Log MyLog.WriteEntry("MyService Log", "This is log on " & _ CStr(TimeOfDay), _ EventLogEntryType.Information)

Digitare il seguente codice nella procedura OnStart. (Questa procedura viene chiamata quando si avvia il servizio, che deve abilitare il timer.)

 Timer1.Enabled = True

E digitare il seguente codice nella procedura OnStop. (Questa procedura viene chiamata quando si interrompe il servizio, che disabilita il timer.)

 Timer1.Enabled = False

La nostra applicazione è ora pronta, ma alcune cose devono ancora essere fatte prima di andare avanti. Quando costruiamo questa applicazione, l’eseguibile creato non è un’applicazione Windows; quindi, non puoi semplicemente fare clic ed eseguirlo. Deve essere installato come servizio, ma non preoccupatevi; non dobbiamo farlo manualmente. VB.Net ha la possibilità di aggiungere un programma di installazione al nostro programma e quindi utilizzare un’utilità per installare il servizio.

Aggiunta del programma di installazione al progetto

Aprire il Servizio1.vb finestra di progettazione e fare clic destro e quindi selezionare l’opzione Aggiungi installer. Questo aggiunge un progetto di installazione, ProjectInstaller.vb, con due controlli, ServiceProcessInstaller1 e ServiceInstaller1, nel nostro progetto esistente.

Selezionare il controllo ServiceInstaller1 e aprire la finestra delle proprietà. Modificare le proprietà ServiceName e DisplayName in MyService. (Questo è il nome che si desidera visualizzare nell’elenco dei servizi in Windows Servizi.)

Selezionare il controllo ServiceProcessInstaller1 e aprire la finestra delle proprietà. Modificare la proprietà Account in LocalSystem. (Questo deve essere specificato perché dobbiamo eseguirlo sul nostro computer locale.)

Ora è il momento di costruire l’applicazione e creare un eseguibile. Selezionare Build Solution dal menu Build per creare un eseguibile con le istruzioni di installazione per il servizio.

Installazione del servizio

Per installare questo servizio, è necessario utilizzare il programma InstallUtil, che è un’utilità.NET, per installare il Servizio Windows. Puoi trovare questo nella cartella C:\WINNT\Microsoft.NET\Framework\v1.0.3705. (Questo potrebbe essere diverso sul tuo computer, a seconda della versione che stai utilizzando.)

In alternativa, è possibile eseguire la finestra di comando. NET selezionando Start, Programmi, Microsoft Visual Studio. NET, Visual Studio. NET Tools, Prompt dei comandi Visual Studio. NET. Questo imposta tutti i percorsi richiesti per te.

Digitare il seguente comando in quella finestra: InstallUtil C:\tgol\Myservice\Bin\Myservice.exe. (Questo è il percorso per l’eseguibile del servizio che abbiamo appena creato. Ricorda, VB.NET creato l’eseguibile nella cartella Bin sotto la cartella del progetto. Assicurati di cambiare questo nel tuo percorso eseguibile.) Si prega di guardare il messaggio e accedere per assicurarsi che il servizio sia installato correttamente.

Avvio del servizio

L’esecuzione di un servizio e l’avvio di un servizio sono due cose diverse. Quando installiamo il servizio con InstallUtil, ora stiamo eseguendo il servizio ma dobbiamo ancora avviarlo. Per visualizzare e avviare il servizio, aprire il Pannello di controllo. Aprire Strumenti di amministrazione, fare clic su Servizi, individuare MyService, e fare clic destro e selezionare Start per avviare questo servizio.

Ora il nostro servizio è iniziato. Aprire il visualizzatore eventi da Strumenti di amministrazione e fare clic sul registro applicazioni per visualizzare i registri creati dal Servizio (MyService) ogni 10 secondi. (Se non vedi alcun registro, fai clic su Aggiorna . Dovrai continuare ad aggiornare per vedere gli ultimi registri degli eventi.

Arresto del servizio

Apri Pannello di controllo, apri Strumenti di amministrazione, fai clic su Servizi, fai clic con il pulsante destro del mouse su MyService e seleziona Stop per interrompere il servizio.

Disinstallazione del servizio

Questa procedura è simile all’installazione del servizio, ma ora eseguiremo il parametro InstallUtil con / U, che disinstalla il servizio:

InstallUtil / U C:\tgol\Myservice\Bin\Myservice.exe (o percorso eseguibile sul computer). Si prega di guardare il messaggio per confermare che il servizio viene disinstallato correttamente.

Suggerimenti

  • Interrompere il servizio e chiudere la finestra del servizio prima di installare/disinstallare il servizio.
  • Disinstallare/installare sempre se si apportano modifiche all’applicazione di servizio.
  • Provare a evitare l’interfaccia utente, gli input e msgbox nell’applicazione di servizio.
  • Apri ProjectInstaller.vb, selezionare il controllo ServiceInstaller1 e aprire la finestra delle proprietà. Modificare la proprietà StartType in Automatico se si desidera avviare il servizio automatico.

Conclusione

Il servizio Windows è spesso trascurato. Utilizzare il servizio di Windows invece di un’applicazione standard quando si deve monitorare o amministrare qualcosa in background. L’unico svantaggio è la procedura di installazione, ma scommetto che ci sono aspetti più positivi quindi negativi quando si seleziona il servizio di Windows su applicazioni che eseguono Windows Scheduler.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.