Добавьте сетевой принтер в системную учетную запись в C#

В настоящее время я работаю над службой C# 2010, которая собирает текстовый файл из папки, создает из нее файл Excel и сохраняет этот файл. TXT-данные корректно читаются, обрабатываются, а файлы Excel сохраняются, как и должно быть. Однако мне нужно добавить диапазоны печати в лист Excel. Здесь мой сервис возвращает исключение.

Проблема, вероятно, заключается в том, что служба работает под системной учетной записью. Поскольку принтер (который не является общим) зависит от пользователя, то есть в системной учетной записи не будет установлено принтеров.

Чтобы реализовать это, как я могу это сделать? - Как служба может добавить принтер в системную учетную запись? - Будет ли он работать с принтером Microsoft XPS? - Если это не может быть сделано принтером XPS, как я могу добавить другой принтер. У нас нет сервера печати, поэтому каждый должен установить драйверы локально для сетевого принтера. Как добавить (сетевой) принтер в системную учетную запись и использовать правильный драйвер?

Файлы Excel создаются и печатаются с одного компьютера. Создание происходит под системной учетной записью, печать под учетной записью пользователя.

Спасибо заранее!!!

январь

1 ответ

В конце концов я решил проблему следующим образом:

Файл Excel:

  • Я создал файл Excel, в котором нет данных и один макрос
  • Макрос выполняется только тогда, когда на листе есть данные (если ячейка x = пуста, выйдите из sub)
  • Макрос устанавливает правильные диапазоны печати

Сервис:

  • Сервис открывает файл Excel
  • Добавляет данные
  • Служба сохраняет копию исходного файла (то есть исходный файл остается без изменений)

Из-за безопасности не очень рекомендуется разрешать системной учетной записи добавлять макрос в Excel (что вполне возможно, но вы должны изменить безопасность Excel по умолчанию для всех пользователей). Вот почему мы решили использовать файл Excel, содержащий макрос.

Другие вопросы по тегам