Печать путем выполнения процесса в службе Windows - PullRequest
9 голосов
/ 29 февраля 2012

У меня есть служба Windows, которая должна запустить процесс для отправки файла на принтер (я нашел это решение там https://stackoverflow.com/a/4875755/1228738). Я делаю это с помощью Process.Start (). Моя проблема в том, что ничегопроисходит.

Служба фактически установлена ​​на моей машине разработчика (win7, x64). Я пытался установить ее как ЛОКАЛЬНАЯ СИСТЕМА, СЕТЕВАЯ СЛУЖБА, ЛОКАЛЬНАЯ СЛУЖБА каждый раз с одним и тем же результатом.

Iпробовал этот способ запуска моего процесса:

Process p = new  Process();
p.StartInfo.FileName = "C:\\Program Files (x86)\\Foxit Software\\Foxit Reader\\Foxit Reader.exe";
p.StartInfo.Arguments = "-p myFile.pdf";
p.Start();

и

Process.Start("C:\\Program Files (x86)\\Foxit Software\\Foxit Reader\\Foxit Reader.exe", "-p myFile.pdf");

, а также

ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "C:\\Program Files (x86)\\Foxit Software\\Foxit Reader\\Foxit Reader.exe";
startInfo.Arguments = "-p myFile.pdf";

Process.Start(startInfo);

Когда я выполняю тот же код в приложении winform, всеработает нормально, файл отправляется на принтер. Но в Windows Service ничего не происходит.

Я видел этот пост https://stackoverflow.com/a/6271309/1228738,, который объясняет, почему я не вижу пользовательский интерфейс, это нормально, я надеваюВ любом случае, пользовательский интерфейс не имеет. Но, как сказано в разделе комментариев, процесс без ввода пользователя должен быть в порядке. Запускаемый мной процесс не требует ввода пользователя.

Единственное, что я могу думатьпрямо сейчас, это потому чтоиспользование изоляции сеанса (https://stackoverflow.com/a/5063750/1228738), служба не может найти установленные принтеры ... Может ли это быть так?Если да, то есть предложение, как обойти это?А если нет, есть идеи, что не так?

Спасибо!

РЕДАКТИРОВАТЬ # 1

Я попытался запустить службу с моей учетной записью, и она работает, так что, думаю, мои опасения подтвердились... у пользователей LOCAL SYSTEM и NETWORK SERVICE нет установленных принтеров.

Так что я немного уточню свой вопрос.Есть ли у этой учетной записи способ доступа к принтерам, установленным на компьютере?

РЕДАКТИРОВАТЬ # 2

Мы наконец решили, что для запуска этой службы будет создан пользователь, и в этих учетных записях мы установим принтер для печати.

Полагаю, этот вопрос сейчас можно закрыть.Спасибо всем за помощь.

Ответы [ 3 ]

3 голосов
/ 14 декабря 2014

У меня тоже была эта проблема, этот трюк решил ее

Перейти к службам ---> Дважды щелкните по нужной услуге ---> перейдите на вкладку входа в систему

Укажите учетные данные для входа, с которых был установлен принтер.

Запустите службу, затем проверьте очередь принтера.

Причина: в локальной системной учетной записи эти принтеры не установлены!

См. Снимок экрана ниже. enter image description here

0 голосов
/ 20 июня 2012

Решение заключается в том, чтобы поделиться вашим локальным принтером и позвонить в Foxit с

-/t yourfile.pdf \\localhost\YourSharedPrinter

Таким образом, для вашего сервиса не требуется UserProfile и DefaultPrinter.

0 голосов
/ 29 февраля 2012

Проверьте эту страницу MSDN: http://support.microsoft.com/kb/324565

Согласно этой странице, вы не можете печатать со страниц ASP.NET или служб Windows с помощью .NET.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...