Ho scritto un programma per console che "fa cose" - principalmente usando boost. Come posso convertirlo in un servizio di Windows? Cosa devo sapere in anticipo sui Servizi Windows?Convertire un programma C++ in un servizio Windows?
risposta
There's a good example on how to set up a minimal service on MSDN. Vedere le parti sulla scrittura della funzione principale, del punto di ingresso e anche del codice di esempio.
Una volta creato e funzionante un servizio Windows, scoprirai il prossimo grande trambusto: è un problema eseguire il debug. Non esiste un terminale (e quindi nessun stdout/stderr) e non appena si tenta di eseguire l'eseguibile, in realtà viene avviato il servizio, quindi viene restituito all'utente.
Un trucco che ho trovato molto utile è aggiungere un'opzione -foreground
alla tua app in modo tale che se si esegue con tale flag si ignora il codice di avviamento del servizio e invece si esegue come un'app console regolare, il che rende molto più facile eseguire il debug. In VS.Net imposta le opzioni di debug per invocare con quel flag.
Potreste essere in grado di 'avvolgere' utilizzando questo strumento da CodeProject:
http://www.codeproject.com/KB/system/xyntservice.aspx
pena dare un'occhiata.
La soluzione più semplice potrebbe essere quella di creare un nuovo progetto di servizio Windows in Visual Studio e copiare il codice nel nuovo progetto.
Se si effettua il refactoring del codice in modo da dividere l'interfaccia utente (in questo caso la console) dalla logica, è possibile creare una libreria che esegue il lavoro e quindi richiamarla dal progetto Console e dal progetto di servizio.
Invece di tagliare e incollare caricare il codice di lavoro (- l'interfaccia utente) nel servizio come libreria – Patrick
È possibile configurare un'applicazione per l'esecuzione come un servizio utilizzando lo strumento Srvany, che è una parte della Windows Server 2003 Resource Kit Tools.
Srvany consente un solo servizio alla volta. Così scrivo il mio srvany (sFany) per far funzionare nginx e php-cgi come servizio Windows insieme. Qui è la fonte https://github.com/stxh/sFany
C'è davvero un buon esempio su MSDN here
Si tratta di un progetto di servizio della caldaia piastra C++ che ha di sé installare/funzionalità di disinstallazione e servizio tronchi di inizio e di fermare gli eventi al registro eventi di Windows. Può essere fermato e avviato tramite l'app di servizi (snap-in) come altri servizi. Si consiglia di dargli inizialmente i diritti di LocalSystem per vederlo funzionare, poiché su xp almeno non ha diritti sufficienti per iniziare con i diritti forniti dal progetto di LocalService. In caso contrario, il progetto Visual Studio 2008 viene eseguito senza le istruzioni scaricate che implicano altrimenti.
Un po 'in ritardo ma spero che questo aiuti qualcun altro.
- 1. Registrazione degli eventi in un programma di servizio di Windows
- 2. Programma Java come servizio Windows
- 3. Come si installa un servizio Windows C# senza creare un programma di installazione?
- 4. Utilizzare un servizio Web nell'app Windows C#
- 5. Esiste un programma per convertire l'assembly in C++?
- 6. C# Convertire l'app della console in servizio
- 7. Invia messaggio Windows a un servizio Windows
- 8. Chiamare un metodo pubblico sul servizio Windows
- 9. Convertire un programma Java Console in Webapp
- 10. Come installare un servizio Windows C# su un server remoto?
- 11. convertire un servizio WCF in un'applicazione RESTful?
- 12. Programma C per convertire Dollar in Rupee
- 13. Come verificare se è installato un servizio Windows in C#
- 14. Come avviare un programma con interfaccia grafica in un servizio di Windows?
- 15. Esegui un altro programma in Linux da un programma C++
- 16. C# - programma di installazione del servizio Windows che non registra il servizio
- 17. Distribuzione di un programma personalizzato a un servizio di hosting
- 18. Avvia un servizio Windows disabilitato?
- 19. Chiamare Environment.Exit in un servizio Windows
- 20. Creare un servizio Windows in vb6
- 21. Stampa eseguendo un processo in un servizio di Windows
- 22. Aggiornamento silenzioso di un servizio di Windows
- 23. Creazione di un programma di installazione MSI per un servizio di Windows
- 24. Aggiornamento automatico di un servizio di Windows
- 25. Creazione di un servizio di Windows per aprire un programma- Delphi
- 26. Reindirizzamento stdout + stderr su un servizio Windows C#
- 27. Come installare un servizio Windows usando Qt?
- 28. C# Concessione dell'autorizzazione "Accedi come servizio" a un utente Windows
- 29. Pianificare un servizio Windows C# per eseguire un'attività quotidianamente
- 30. programma C per convertire Fahrenheit a Celsius
Qui ci sono alcuni suggerimenti utili per il debug (specialmente l'uso di gflags per avviare automaticamente il debugger): http: // support .microsoft.com/kb/824344 –
aggiungo il -foreground alla riga di comando? – Maciek
Sì, se si esegue senza flag, il servizio viene installato ed eseguito (questo è il modo in cui i servizi devono funzionare). Se si esegue l'opzione -foreground, si ignora il passaggio di installazione del servizio. –