У меня есть служба Windows, которой необходимо запустить процесс для отправки файла на принтер (я нашел это решение там https://stackoverflow.com/a/4875755/1228738). Я делаю это с помощью Process.Start (). Моя проблема в том, что ничего не происходит.
Служба фактически установлена на моем компьютере разработчика (win7, x64). Я пробовал установить его как ЛОКАЛЬНАЯ СИСТЕМА, СЕТЕВОЙ СЕРВИС, ЛОКАЛЬНЫЙ СЕРВИС, каждый раз получая один и тот же результат.
Я пробовал запустить свой процесс таким способом:
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 ничего не происходит.
Я видел это сообщение https://stackoverflow.com/a/6271309/1228738, в котором объясняется, почему я не вижу UI, это нормально, у меня все равно нет UI. Но, как сказано в разделе комментариев, процесс без ввода данных пользователем должен быть в порядке. Процесс, который я запускаю, не требует участия пользователя.
Единственное, о чем я могу думать прямо сейчас, это то, что из-за изоляции сеанса (https://stackoverflow.com/a/5063750/1228738) сервис не может найти установленных принтеров ... Неужели в этом дело? Если да, есть предложения, как это обойти? А если нет, то что не так?
Спасибо!
ИЗМЕНИТЬ №1
Я попытался запустить службу с моей учетной записью, и она работает, поэтому я думаю, что мои опасения подтверждаются ... у пользователей LOCAL SYSTEM и NETWORK SERVICE не установлены принтеры.
Так что я немного уточню свой вопрос. Есть ли способ для этой учетной записи получить доступ к принтерам, установленным на компьютере?
ИЗМЕНИТЬ №2
В конце концов мы решили, что будет создан пользователь для запуска этой службы, и в этих учетных записях пользователей мы установим принтер для печати.
Думаю, сейчас этот вопрос можно закрыть. Спасибо за вашу помощь.