Qual è la differenza tra un servizio Windows e un exe standard?Come si differenzia un servizio Windows da un exe standard?
risposta
Un servizio Windows viene eseguito sempre all'avvio del computer (a condizione che sia configurato). Un EXE standard viene eseguito solo quando un utente ha effettuato l'accesso e si interromperà se l'utente si disconnette.
Si potrebbe utilizzare un servizio di Windows per le cose che hanno sempre bisogno di correre, anche se nessuno è connesso.
Si potrebbe utilizzare un EXE standard per i programmi che un utente verrà eseguito mentre si è connessi.
A il servizio è (di solito) è un exe standard senza interfaccia utente. Può essere eseguito anche quando non ci sono utenti registrati nella macchina, ed è diritti di accesso e la visualizzazione del file system non dipende da quale utente è connesso.
Non accurato al 100%. Un servizio deve soddisfare alcuni requisiti aggiuntivi oltre a essere un exe standard senza interfaccia utente. –
sì alcuni requisiti e una API diversa a cui ha accesso, ma sempre un EXE standard. –
Il servizio Agente SQL Server non ha l'interfaccia semaforo? Questo è un servizio se non sbaglio? – LearningCSharp
Un servizio Windows ha una funzione speciale ServiceMain
e deve rispondere a I comandi SCM (Service Control Manager) correttamente per essere funzionali come servizio. D'altra parte, un eseguibile regolare ha una funzione main
o WinMain
e non ha bisogno di rispondere a particolari comandi di controllo.
Tecnicamente corretto ma non penso che risponda molto bene alla domanda. (Vedi la risposta di Eric J). – Ash
Le risposte di Greg ed Eric funzionano, ma posso segnarne solo una corretta :-( – LearningCSharp
Penso che sia una risposta molto più corretta di quella scelta, l'altra risponde meglio alla domanda "Cos'è un servizio di Windows". –
Se si sta parlando di attuazione di un'operazione di sfondo, ecco i criteri vi consiglio di scegliere un servizio o un exe finestra-meno:
Scegliere un exe se:
- Ne hai bisogno per l'esecuzione per utente e solo quando un utente è connesso
- È necessario interagire con il desktop di Windows (icone di notifica, ecc.)
- Ha bisogno di tutti i privilegi del login in utente (né più né meno)
Scegliere un servizio se:
- Potrebbe essere necessario eseguire quando nessuno è connesso
- E in genere non ha bisogno di dati per utente o privilegio
- Si comunica esclusivamente con la rete
- Ha bisogno di esporre nuovi oggetti "sicuri". Oggetti con elenchi di controllo di accesso dichiarativo (DACL) che limitano l'accesso a determinati account/gruppi.
- Richiede autorizzazioni speciali che potrebbero non essere disponibili per l'utente che ha effettuato l'accesso.
I servizi possono essere facilmente buchi di sicurezza, quindi preferisci .exe ai servizi. A volte avrai bisogno di entrambi. Un correttore di virus deve essere in grado di accedere a tutti i file sul filesystem (che l'utente corrente potrebbe non essere in grado di fare), ma deve anche fornire informazioni all'utente sotto forma di finestre di dialogo/pop-up di notifica e uno strumento icona del vassoio. I servizi non possono interagire direttamente con la GUI dell'utente. Possono utilizzare i servizi standard di Windows IPC (comunicazione tra processi) come pipe e aree di memoria condivisa. Tali strumenti di solito hanno sia un servizio che un file exe senza finestre per utente che comunica con il servizio utilizzando le pipe di Windows o le aree di memoria condivisa.
Ottieni "Programmazione di Windows Security" di Keith Brown se vuoi approfondire questi argomenti.
Nit minore: la D in DACL sta per Discretionary –
"Si comunica solo con la rete", Questo non è corretto, i servizi possono fare molte altre cose rispetto all'accesso alla rete – Ash
Non tutti i servizi Win32/64 comunicano solo con la rete, ma tutti i daemon che necessitano solo di comunicare con la rete sono quasi sempre meglio implementati come servizi durante la programmazione su Win32/64. Intendevo che l'elenco descrivesse scenari in cui i servizi avevano senso, non circoscrivendo ogni caso d'uso per i servizi di Windows. –
Dal punto di vista di EXE Binary e dal punto di vista della libreria C del compilatore, un servizio di Windows sembra esattamente come un programma Unix standard o un programma di console Windows. cioè con il punto di ingresso main()
. Ciò che rende diverso un servizio è come viene caricato/invocato da Microsoft Windows (dal registro, solitamente all'avvio). Un servizio può (e dovrebbe) comunicare all'applicazione SC.exe [Service Control Manager] tramite chiamate API Windows, che il servizio sia avviato, arrestato, sospeso, ecc.
- 1. Su Windows, come si differenzia OpenGL da DirectX?
- 2. Servizio mDNS standard su Windows
- 3. In che modo Windows distingue tra un EXE normale e un exe .NET?
- 4. Come si interrompe un'applicazione del servizio Windows da un thread?
- 5. Più servizi Windows in un exe
- 6. Come si differenzia Cucumber da JUnit?
- 7. Come chiamare un servizio Windows da asp.net
- 8. Passaggio da EXE autonomo a Windows Service
- 9. È possibile creare un servizio web C# standalone distribuito come servizio EXE o Windows?
- 10. Come chiamare un .exe da PL/SQL?
- 11. Come creare un servizio che esegue un file .exe su Windows 2012 Server?
- 12. Come acquisire l'output di errore standard da un servizio di Windows?
- 13. Come riprodurre un suono standard di Windows?
- 14. Stesso nome mutex per un servizio Windows ed exe in Windows 7
- 15. Come si differenzia un operatore di streaming dall'esecuzione differita?
- 16. Servizio WCF come servizio Windows guai (Windows 7)
- 17. avvio di un processo da un servizio Windows .NET
- 18. Come si chiama un servizio Grails da un gsp?
- 19. Invia messaggio Windows a un servizio Windows
- 20. Come ottengo le porte aperte da un servizio di Windows?
- 21. Come creare un servizio Windows con parametri?
- 22. Come installare un servizio Windows usando Qt?
- 23. Avviare un servizio Windows e lanciare cmd
- 24. esecuzione di un'applicazione exe da Windows forma
- 25. Come la lista si differenzia dalla mappa?
- 26. Come si esegue un altro .exe da VB.NET come un altro utente?
- 27. Avvia un servizio Windows disabilitato?
- 28. Eseguire un EXE da una directory diversa?
- 29. Come si esegue un file java .jar come servizio Windows su Windows Server 2008?
- 30. interrompere un servizio di Windows che dipende da un altro servizio tramite file batch
Anche questo è un ottimo [post] (http: //superuser.com/questions/209654/whats-the-difference-between-an-application-process-and-services) –