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 System
가 ExecWB
기능 계정 아무것도하지 않는다 스레드가 예외없이 종료됩니다. 관리자 자격 증명을 사용하여 서비스를 기록하면 ExecWB
기능이 완벽하게 작동하지만이 계정을 사용하고 싶지 않습니다.
모든 의견을 환영합니다.
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
나는 내 코드에서 첫 번째 예제를 알고 사용했다. "WinForms를 사용하지 마십시오"라는 것이 무슨 뜻인지 이해하지 못합니다. 나는 생각하지 않는다. – toy4fun