Ho un servizio di Windows che deve avviare un processo per inviare un file alla stampante (ho trovato quella soluzione lì https://stackoverflow.com/a/4875755/1228738). Lo faccio usando Process.Start(). Il mio problema è che non succede nulla.Stampa eseguendo un processo in un servizio di Windows
Il servizio è attualmente installato sul mio sviluppatore (win7, x64). Ho provato a installarlo come LOCAL SYSTEM, NETWORK SERVICE, LOCAL SERVICE con lo stesso risultato ogni volta.
ho provato quelle modo di iniziare il mio processo:
Process p = new Process();
p.StartInfo.FileName = "C:\\Program Files (x86)\\Foxit Software\\Foxit Reader\\Foxit Reader.exe";
p.StartInfo.Arguments = "-p myFile.pdf";
p.Start();
e
Process.Start("C:\\Program Files (x86)\\Foxit Software\\Foxit Reader\\Foxit Reader.exe", "-p myFile.pdf");
e anche
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "C:\\Program Files (x86)\\Foxit Software\\Foxit Reader\\Foxit Reader.exe";
startInfo.Arguments = "-p myFile.pdf";
Process.Start(startInfo);
Quando eseguo lo stesso codice in un'applicazione WinForm, tutto funziona bene, il file viene inviato alla stampante. Ma nel servizio di Windows, non succede nulla.
Ho visto quel post https://stackoverflow.com/a/6271309/1228738, che spiega perché non vedrei l'interfaccia utente, va bene non ho alcuna interfaccia utente comunque. Ma come detto nella sezione commenti, un processo senza input dell'utente dovrebbe essere OK. Il processo che avvio non ha bisogno di alcun input da parte dell'utente.
L'unica cosa che posso pensare al momento, è che a causa dell'isolamento della sessione (https://stackoverflow.com/a/5063750/1228738), il servizio non riesce a trovare le stampanti installate ... Può essere così? Se è così, qualche suggerimento su come aggirare questo? E se no, qualche idea di cosa c'è che non va?
Grazie!
EDIT # 1
ho provato a fare funzionare il servizio con il mio account utente, e sta funzionando, quindi credo che i miei timori sono confermati ... il sistema locale e SERVIZIO DI RETE utenti non hanno le stampanti installate.
Quindi perfezionerò la mia domanda un po '. C'è un modo per questi account di accedere alle stampanti installate sul computer?
EDIT # 2
abbiamo finalmente deciso che un utente verrà creato per l'esecuzione di tale servizio e in che gli account utente faremo installare la stampante su cui stampare.
Immagino che questa domanda possa essere chiusa ora. Grazie a tutti per il vostro aiuto.
Potrebbe essere perché l'applicazione sta tentando di mostrare la finestra di dialogo di stampa ma la sessione non è interattiva (controllare il registro eventi dell'applicazione) o potrebbe essere, come suggerito, perché l'utente il servizio viene eseguito come non ha stampanti configurato. È possibile accedere come utente che esegue il servizio come (se possibile) e configurare le stampanti. –
Quando eseguo esattamente lo stesso codice in un'applicazione winform, il file viene inviato alla stampante senza la finestra di dialogo di stampa, quindi mi aspetto lo stesso comportamento dal servizio. Proverò qualcosa di simile a ciò che suggerisci, ed eseguirò il servizio con il mio account utente, e vedrò se funziona in questo modo. Grazie anche – Fid
, dove si trova myFile.pdf? Il servizio ha accesso a quel percorso? – roymustang86