Я ни в коем случае НЕ эксперт по службам терминалов, и мне нужна помощь, чтобы заставить прикладную программу работать в многопользовательском режиме. и мультипринтер Окружающая среда. У каждого пользователя есть собственный принтер, подключенный к локальной сети (USB). Каждый из них появляется в сеансе ts с уникальным именем. Устаревшее приложение можно настроить только для печати на одном принтере. Конфигурация является глобальной для пользователей, локальной для машины, которая подходит для отдельных рабочих станций, но не для ts, которая, по-видимому, представляет собой одну машину для всех пользователей.
Проблема в том, что принтер меняется для каждого пользователя, который вошел в систему. Приложению необходимо печатать НЕ на принтере по умолчанию, а на «специальный» принтер, который выбран в приложении ... назовем его принтером этикеток для упрощения объяснение. У вас есть обычный принтер по умолчанию, который приложение может легко найти, а затем у вас есть специальный принтер, на который печатаются этикетки. Приложению необходимо знать, какой принтер является принтером этикеток. Таким образом, мы позволяем пользователю выбирать это в приложении, и выбор сохраняется в файле конфигурации в C: \ ProgramData \ mfgr \ prog \ setting files.
У меня нет доступа к приложению, поэтому я не могу изменить его работу или место хранения конфигурации.
В «обычном» мире выбор используемого драйвера принтера этикеток должен производиться для каждой машины, а НЕ для каждого пользователя. Когда новый пользователь входит в систему, физический принтер не выходит из строя, и внезапно появляется новый принтер. Один принтер для всех пользователей.
Тем не менее, в службах терминалов физическая машина «объединена» с виртуальной машиной на сервере. Таким образом, настоящая машина каждого пользователя (и настоящий принтер) вводится в «фальшивую» машину терминальных служб. Имя принтера делается уникальным для каждого пользователя. Таким образом, принтеры ДЕЙСТВУЮТ и меняют имена в зависимости от того, какой пользователь вошел в службы терминалов.
Таким образом, пользователь «A» входит в систему и настраивает приложение для печати на «LabelPrinterForUserA» (или как бы там ни было имя принтера), этот параметр сохраняется во вложенной папке ProgramData, и все в порядке. Позже пользователь «B» входит в систему, и при печати приложение пытается выполнить печать на «LabelPrinterForUserA», который не существует для пользователя B. Если пользователь B переконфигурирует, это прерывает его для пользователя A.
РЕШЕНИЕ 1: способ, которым / должен / работать (на мой взгляд), заключается в том, что вы определяете один "общий" принтер в службах терминалов ... называете его "виртуальным принтером этикеток", и когда пользователь печатает на нем, задание печати получает повторно -направлен обратно на любой физический принтер, фактически подключенный к их локальной рабочей станции. В сервере терминалов есть сопоставление или настройка, которая сообщает ему, какой фактический принтер использовать для каждого пользователя, когда задание поступает на виртуальный принтер. Приложению предлагается один раз распечатать на «виртуальном принтере этикеток» для всех пользователей.
РЕШЕНИЕ 2: Или ... должен быть способ сделать подпапки ProgramData отдельными для каждого пользователя. Например. когда пользователь «A» пытается получить доступ к: C: \ ProgramData \ mfgr \ prog \ файлам настроек, они фактически получают C: \ UserData \ UserA \ AppData \ mfgr \ prog \ файлы настроек, а пользователь «B» получает C: \ UserData \ UserB \ AppData \ mfgr \ prog \ файлы настроек
Итак, у меня вопрос: существует ли какое-либо из этих решений где-то в настройке терминального сервера? Или есть другой способ обойти эту проблему, которого я не знаю?
Обновить
Чтобы уточнить, не просто один принтер. Есть несколько принтеров. У каждого пользователя есть физический (назовем его этикеточным) принтер USB, подключенный к их физической рабочей станции. Насколько я понимаю от администратора, когда пользователи устанавливают свои принтеры, имена принтеров должны быть разными. Вы хотите сказать, что каждый пользователь может установить свой собственный принтер и использовать одно и то же имя?
Не похоже, что приложение предназначено для работы в многопользовательской среде (о чем свидетельствует тот факт, что оно хранит параметры конфигурации в программных данных), я предлагаю установить принтер на сервере терминалов и попросить ваших пользователей выбрать принтер, установленный локально на сервере служб терминалов.
Я чувствую вашу боль при использовании старого программного обеспечения на терминальных серверах ... решение, которое я придумал, определенно не будет масштабироваться, поскольку требует некоторой ручной настройки, но у меня есть этот метод для работы с нашими принтерами этикеток (которые требуется печатать на порт LPT ... да, тот старый).
Предоставьте доступ к подключенным через USB принтерам к сети на каждой машине. Затем попросите пользователя войти в систему уникальный сеанс для каждого из них (учетная запись TS не может быть разделена между компьютерами, чтобы это работало) и установить сетевой принтер, указывающий на тот USB, который они совместно использовали. Попробуйте использовать DNS-имя для учета возможных перемещений DHCP.
После этого должно работать. Это может сделать каждый пользователь, поскольку отображаемые имена могут быть идентичными, если порты разные (каковы они есть).