Добавьте сетевой принтер в системную учетную запись в C#
В настоящее время я работаю над службой C# 2010, которая собирает текстовый файл из папки, создает из нее файл Excel и сохраняет этот файл. TXT-данные корректно читаются, обрабатываются, а файлы Excel сохраняются, как и должно быть. Однако мне нужно добавить диапазоны печати в лист Excel. Здесь мой сервис возвращает исключение.
Проблема, вероятно, заключается в том, что служба работает под системной учетной записью. Поскольку принтер (который не является общим) зависит от пользователя, то есть в системной учетной записи не будет установлено принтеров.
Чтобы реализовать это, как я могу это сделать? - Как служба может добавить принтер в системную учетную запись? - Будет ли он работать с принтером Microsoft XPS? - Если это не может быть сделано принтером XPS, как я могу добавить другой принтер. У нас нет сервера печати, поэтому каждый должен установить драйверы локально для сетевого принтера. Как добавить (сетевой) принтер в системную учетную запись и использовать правильный драйвер?
Файлы Excel создаются и печатаются с одного компьютера. Создание происходит под системной учетной записью, печать под учетной записью пользователя.
Спасибо заранее!!!
январь
1 ответ
В конце концов я решил проблему следующим образом:
Файл Excel:
- Я создал файл Excel, в котором нет данных и один макрос
- Макрос выполняется только тогда, когда на листе есть данные (если ячейка x = пуста, выйдите из sub)
- Макрос устанавливает правильные диапазоны печати
Сервис:
- Сервис открывает файл Excel
- Добавляет данные
- Служба сохраняет копию исходного файла (то есть исходный файл остается без изменений)
Из-за безопасности не очень рекомендуется разрешать системной учетной записи добавлять макрос в Excel (что вполне возможно, но вы должны изменить безопасность Excel по умолчанию для всех пользователей). Вот почему мы решили использовать файл Excel, содержащий макрос.