PDF 파일을 인쇄하는 서비스를 만들었습니다. FoxitReader를 호출하여 System.Process 객체를 호출하면 콘솔 명령이 전달되어 서비스가 수행되지 않습니다. 세션 0 격리에 대해 읽었지만 서비스가 GUI 응용 프로그램을 호출하지 않고 실행 파일의 명령 만 실행합니다. Windows 서비스가 외부 응용 프로그램을 실행할 수없는 이유는 무엇입니까?
이
내 코드입니다 :System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = "FoxitReader.exe";
proc.StartInfo.Arguments = " /t " + '"' + nombreArchivo + '"' + " " + '"' + nombreImpresora + '"';
EventLog.WriteEntry("InboundServicioImpresion", "Comando impresion:" + proc.StartInfo.FileName + proc.StartInfo.Arguments);
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.UseShellExecute = false;
proc.Start();
proc.WaitForExit();
참고 : FoxitReader.exe는 서비스 패키지에 포함되어 있습니다; 그것은 서비스와 동일한 폴더에 설치됩니다.
코드에서 수행해야 할 이벤트가 시작되고 이벤트 로그에 기록되며 충돌이 발생하지 않거나 예외가 발생하지 않습니다. 모든 메소드는 try-catch로 제어됩니다. 또한 한 폴더에서 다른 폴더로 파일을 이동할 수 있습니다. 유일하게 효과가없는 것은 여우, 어도비 리더 또는 수마트라 PDF로 인쇄하는 것입니다.
왜 작동하지 않는지 알고 싶습니다.
감사합니다. Esteban.
서비스로 어떤 사용자가 실행되고 있습니까? 프린터가 서비스가있는 상자에 로컬로 인쇄하려고합니까? 아니면 네트워크 프린터입니까? – user957902
출력을 리디렉션하고 있지만 읽지는 않았습니다. 그것이 프로그램을 교착 상태로 만들 정도로 충분합니다. 누군가가 결과물을 덜어주기를 기다리고 있습니다. 리디렉션하지 마십시오. –