Во-первых, я бы предложил запустить службу в контексте определенного пользователя . Затем войдите на сервер под этим пользователем и убедитесь, что принтер установлен, установлен по умолчанию и т. Д.
Во-вторых, отказывается от решения MS Paint , чтобы упростить задачу. Вы можете загрузить изображение в .NET с помощью System.Drawing.Image.FromFile (YourImageFilePath) и использовать PrintDocument, чтобы сделать все остальное ...
Создайте объект PrintDocument, определите ваши настройки (какой принтер использовать, поля и т. Д.), Добавьте обработчик для события PrintPage документа, который делает что-то вроде e.Graphics.DrawImage (YourTiffImageObject, New Rectangle (0) , 0, e.MarginBounds.Width, e.MarginBounds.Height)), чтобы нарисовать изображение TIFF на странице. Наконец, вы вызываете метод .Print вашего объекта PrintDocument, и он уходит.
Таким образом, .NET обрабатывает печать, а не какое-то случайное стороннее приложение.
Существуют некоторые незначительные изменения кода, когда вы работаете с более чем одной страницей одновременно (в первую очередь вызывая SelectActiveFrom для изменения страницы в многостраничных TIFF-файлах и устанавливая e.HasMorePages = True в событии PrintPage, пока вы не прочитаете последняя страница) но все это довольно легко и хорошо задокументировано.
UPDATE:
Просто для полноты, я думаю, мне следует добавить то, что уже упоминали другие ... Для некоторых приложений может потребоваться доступ к рабочему столу для правильной работы . Если вы придерживаетесь MS Paint, вам может потребоваться включить «Разрешить службе взаимодействовать с рабочим столом» в свойствах службы.