2014-10-03 4 views
0

У меня есть служба Windows, которая должна распечатывать текст HTML.
ОС 7, с .NET 4.5.1 и IE 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 работает отлично, но я не хочу использовать эту учетную запись.

Любые комментарии будут приветствоваться.

+0

Не использовать WinForms в Windows Service. Проблема, скорее всего, вызвана этим. Используйте другой способ печати HTML. Если необходимо, см. [Печать html-документа из службы Windows в C# без диалога печати] (http://stackoverflow.com/questions/416314/print-html-document-from-windows-service-in-c-sharp-without -print-dialog), но он все еще использует элемент управления WebBrowser. См. Также [Печать html-документа из Windows Service без диалогового окна печати] (http://stackoverflow.com/questions/419412/print-html-document-from-windows-service-without-print-dialog). – CodeCaster

+0

Я знаю и использовал первый пример в своем коде. Я не совсем понимаю, что вы подразумеваете под «Не используйте WinForms». Я не думаю, что это так. – toy4fun

ответ

Смежные вопросы