У нас есть служба автоматической печати, работающая как системная учетная запись, печатающая веб-адреса. Идея заключается в использовании WebBrowser для загрузки страницы и вызова Распечатать после завершения загрузки.
Это отлично работает на Server 2003, 2008r2 и т. Д., Но не работает на Server 2012, ТОЛЬКО ЕСЛИ он работал как служба. работает как консольное приложение.
Проблема:
Он будет нормально загружать веб-страницы и вызовет Print (), Print () вернется, но на принтере по умолчанию ничего не будет напечатано: задание на печать вообще отсутствует.
Я думал, что это будет проблема с учетной записью, поэтому я попытался запустить службу от имени того же пользователя, вошедшего в систему, но все еще не работает, если этот пользователь запускает приложение как консольное приложение, тогда оно будет работать нормально. Таким образом, принтер по умолчанию и учетная запись пользователя исключаются.
Я не думаю, что это проблема кода (хотя должно быть), поскольку это работает для более старых версий Windows, работающих как служба.
Похоже, что-то фундаментальное изменилось для процесса обслуживания в server 2012.
Обновление 1. Это может быть связано с Как распечатать HTML-документ из веб-службы?
Однако он отлично работает для меня до сервера 2012 года.
Обновление 2. Это не работает, даже если вся печать выполняется в отдельном процессе, т.е. моя служба запускает процесс для печати, это тоже не работает. Все работает нормально, если я запускаю тот же код в консольном режиме. Это определенно не проблема потоковой передачи, а что-то глубокое в сервере 2012.
Теперь вопросы:
Что изменилось? Почему перестало работать?