Программы DOS до сих пор используются в мире бизнеса. Советы о том, как заставить их нормально работать на современной вычислительной платформе, широко распространены в Сети. Вот что мне помогло.
16-битная DOS-программа, с которой нам нужно работать, находится на 32-битном сервере Windows 2003, который вскоре будет удален. А до тех пор часть программы сопоставляется с двумя 32-битными клиентскими машинами из основного домена с помощью групповой политики. Ярлык на .cmd файл, который запускает программу, размещается вручную на клиентах, также на основном домене. Программа хорошо работает на Windows 8.1. Немного компромисса, чтобы быть уверенным, но машины будут обновлены до 64-bit Windows 8.1, когда DOS программа, которая запускается из вторичного домена, выйдет на пенсию.
Печать из программы представляет собой самую большую проблему. С этой программой используются два разных параллельных принтера, но программа печатает только на один порт, и нет возможности изменить это поведение. Нужно распечатать чек на лазерном принтере? Она должна быть подключена к порту LPT1. Нужно распечатать дамп данных на матричный принтер? Она также должна быть подключена к порту LPT1. С этой программой ежедневно работают два человека, поэтому мы будем использовать их компьютеры, по одному на каждый принтер. Установим первый принтер:
Если компьютер имеет физический порт DB-25 (параллельный), то его можно отключить в BIOS. Windows 8.1 его не поддерживает, и он нам не нужен.
Для подключения принтера к компьютеру используется адаптер параллельного принтера Cables-to-Go модели 16899 USB to DB25. Адаптер устанавливается автоматически и не распознается как параллельное устройство или LPT-порт.
Теперь откройте Принтеры и Устройства. Нажмите Добавить принтер и выберите Принтер, который мне нужен, в списке нет. В следующем диалоге выберите Добавить локальный принтер или сетевой принтер с ручными настройками, а в следующем диалоге используйте существующий порт. Выберите из списка порт виртуального принтера для USB, USB001 или USB002, а не параметры LPT-порта.
Первый принтер - многорежимный матричный принтер Panasonic KX-P1191. Принтер не указан в диалоговом окне, которое запрашивает драйвер, и обновление списка нажатием кнопки Windows Update не помогает. Проверка сайта поддержки Panasonic показывает, что принтер полностью не поддерживается на данный момент, но специалист технической поддержки Panasonic помог озадачить след, который привел к Epson FX серии 1(80) драйвер, включенный в Windows 8.1. Теперь принтер установлен. Но он находится на порту USB001 и программа будет печатать только на порт LPT1. Решение относительно простое и может быть интегрировано прямо в пакетный файл, который используется для запуска программы. Давайте по старинке и разыграем трюк с нашим принтером: мы поделимся им и распечатаем на LPT1 таким образом.
Щелкните правой кнопкой мыши на принтере и выберите Свойства (Properties). Общий доступ к принтеру, не указывайте его в каталоге, создайте короткое имя ресурса просто для хорошей меры, а затем убедитесь, что пользователь клиентской машины находится в списке в области Group или имя пользователя в закладке Security (безопасность).
Два человека, которые будут печатать на эти принтеры, создают мою зарплату, поэтому я дал им права администратора домена (Domain Admin). Это, возможно, было излишним. Оба являются пользователями основного домена, но не вторичного, и я не хотел тратить время на диагностику проблемы с разрешениями.
Теперь модифицируйте пакетный файл и используйте хорошо документированную команду net use для реализации решения печати:
@echo off
::delete the printer
net use lpt1 /delete
::add the printer
net use lpt1 \\COMPUTER\PRINTER /persistent:yes
::fire up the nasty ol' DOS program
<existing syntax used to start the program>
- Где КОМПЬЮТЕР - имя компьютера, а ПРИНТЕР - имя ресурса принтера. Процедура одинаково хорошо работала на втором компьютере для принтера HP LaserJet 1100 с использованием драйвера “HP LaserJet 1100 (MS)”, поставляемого с Windows 8.1.
– NOTES –
Ошибка системы 5:
Убедитесь, что пользователь находится в списке под закладкой безопасности. “Все” могут быть удалены. Требуются ли пользователю привилегии администратора домена? Вероятно, нет, если все запущено из одного домена.
Ошибка системы 66:
Проверьте синтаксис. Вы, вероятно, неправильно написали имя компьютера, принтера, или, возможно, пропустили двоеточие? Согласно документации Microsoft, нужен только один двоеточие. Будет ли добавление ненужного двоеточия в lpt1[:] приводить к ошибке?
Все о сетевом использовании https://technet.microsoft.com/en-us/library/bb490717.aspx .