2014-10-03 6 views
0

HTML 텍스트를 출력해야하는 Windows 서비스가 있습니다.
OS가 .NET 4.5.1 IE와 7 11.Windows 서비스 자격증 명

코드 :

private static void PrintOnStaThread(string text) 
    { 
     using (WebBrowser webBrowser = new WebBrowser()) 
     { 
      webBrowser.Navigate("about:blank"); 
      webBrowser.Document.OpenNew(false); 

      while (webBrowser.DocumentText != text && webBrowser.ReadyState != WebBrowserReadyState.Complete) 
      { 
       webBrowser.Document.Write(text); 
       webBrowser.Refresh(); 
       Application.DoEvents(); 
      } 

      InternetExplorer internetExplorer = (InternetExplorer)webBrowser.ActiveXInstance; 
      internetExplorer.ExecWB(OLECMDID.OLECMDID_PRINT, OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER, Win32.PRINT_WAITFORCOMPLETION); 
     } 
    } 

문제점은 : 서비스를 이용하여 기록되면
Local SystemExecWB 기능 계정 아무것도하지 않는다 스레드가 예외없이 종료됩니다. 관리자 자격 증명을 사용하여 서비스를 기록하면 ExecWB 기능이 완벽하게 작동하지만이 계정을 사용하고 싶지 않습니다.

모든 의견을 환영합니다.

+0

Windows 서비스 내에서 WinForms를 사용하지 마십시오. 문제는 그로 인해 발생할 가능성이 큽니다. HTML을 인쇄하는 다른 방법을 사용하십시오. 필요한 경우 [인쇄 대화 상자없이 C#의 Windows 서비스에서 html 문서 인쇄] (http://stackoverflow.com/questions/416314/print-html-document-from-windows-service-in-c-sharp-without)를 참조하십시오. -print-dialog), 여전히'WebBrowser' 컨트롤을 사용합니다. [인쇄 대화 상자없이 Windows 서비스에서 html 문서 인쇄] (http://stackoverflow.com/questions/419412/print-html-document-from-windows-service-without-print-dialog)를 참조하십시오. – CodeCaster

+0

나는 내 코드에서 첫 번째 예제를 알고 사용했다. "WinForms를 사용하지 마십시오"라는 것이 무슨 뜻인지 이해하지 못합니다. 나는 생각하지 않는다. – toy4fun

답변