2011-12-07 2 views
3

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.

+1

서비스로 어떤 사용자가 실행되고 있습니까? 프린터가 서비스가있는 상자에 로컬로 인쇄하려고합니까? 아니면 네트워크 프린터입니까? – user957902

+0

출력을 리디렉션하고 있지만 읽지는 않았습니다. 그것이 프로그램을 교착 상태로 만들 정도로 충분합니다. 누군가가 결과물을 덜어주기를 기다리고 있습니다. 리디렉션하지 마십시오. –

답변

2

은 기본에서 서비스를 실행하고 있습니까, LocalSystem 계정? 아마도 프린터에 액세스 할 수 없습니다.

FoxitReader를 사용하여 정상적으로 인쇄 할 수있는 서비스 및 계정을 실행 해보고 작동하는지 확인하십시오. Windows 서비스 제어판 애플릿에서 서비스를 구성 할 때 "로그온"탭에서 변경하십시오. http://www.powershellinside.com/kb/articles/powershellssh-useraccounts-1.jpg

+0

안녕하십니까, CoreTech. 예, 내 서비스가 te LocalSystem 계정으로 실행되도록 구성되었습니다. – t3b4n

+0

사용자 계정으로 설정하여 작동하는지 볼 수 있습니까? (당연히 프린터에 액세스 할 수있는 계정) – CoreTech

+0

감사합니다! 사용자 관련 문제였습니다. 사용자 계정을 내 사용자로 변경하면 프로세스가 시작될 수 있습니다. – t3b4n

4

파일 이름 대신 파일의 정규화 된 이름이 필요합니다. 서비스의 기본 경로는 C : \ Windows \ System32 (또는 OS에 따라 다름)로 설정되어 있습니다.

변경이 라인 :

proc.StartInfo.FileName = "FoxitReader.exe"; 
이에

(또는 항상 고정 된 경로 인 경우를 하드) :

proc.StartInfo.FileName = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "FoxitReader.exe"); 
+0

답변을 주셔서 감사합니다. Russell, 코드에 변경을가했지만 아직 인쇄가 진행되지 않았습니다. – t3b4n

+0

글쎄, 당신이 실제로 올바른 실행 파일을 실행하고 있다고 확신한다면, 표준 출력과 에러를 포착해서 그들이 말하는 것을보아야한다. –

관련 문제