У заказчика установлена система управления предприятием, в которой используется 16-ти разрядный клиент, написанный на языке Clipper. Наибольшая сложность, которая возникает при эксплуатации данного приложения — печать на современные принтеры. И вот, прослуживший много лет верой и правдой принтер постарел. Вместо него был куплен принтер HP LaserJet P3015dn. Запуск печати из приложения продемонстрировал ошибку подсистемы MS-DOS:
Проблема была решена с помощью установки принтера на сервер с Windows Server 2003 R2 x64 и дополнительных драйверов для [устаревших] 32-х разрядных систем.
1. Решение
В документации подробно описано, как выполнить первичную настройку. Поэтому предположим, что необходимые сетевые и прочие настройки принтера уже указаны; принтер включен и видим по адресу 192.168.1.1. На сервере PrintServer1 с Windows Server 2003 R2 x64 запускаем диск с программным обеспечением принтера. Данная модель поддерживает печать в формате PCL и PS. Для нашей цели достаточно формат PCL. Выбираем установку PCL 6 драйвера, читаем и соглашаемся с лицензионным соглашением, указываем IP-адрес или имя принтера, и устанавливаем драйвер. Затем принтер появится в перечне установленных принтеров.
Теперь нужно сделать общий доступ к принтеру и добавить драйвера для 32-х разрядных систем Windows 2000, Windows XP и Windows Server 2003
. После подтверждения действия система запросит путь к драйверам, на что указываем CD-ROM:Driversi386(32 bit - 2000_XP_S2003_Vista)PCL6
.
После этого на клиентских станциях с Windows 7 Enterprise x32 подключаем установленный принтер с помощью команды
net use lpt2: PrintServer1HPLaserJet3010PCL /PERSISTENT:YES
В приложении указываем, что принтер подключен к порту LPT2, и все, печать успешно заработала.
2. Воспроизведение ошибки
Выполним аналогичные действия, но установим принтер на административном компьютере с Windows 7 Enterprise x64. Окошко с дополнительными драйверами содержит единственный пункт 32-х разрядных драйверов.
Печать на установленный таким образом сервер генерирует ошибку подсистемы MS-DOS.
На следующий день после написания заметки установил сетевой принтер на сервере с установленной Windows Server 2008 R2 x64. На удивление, печать из 16-ти разрядных приложений выполнилась успешно. Кто говорил про необходимость бубна? 😉
3. Решение подходит не для всех принтеров
К сожалению, не со всеми принтерами компании-производителя (в нашем случае Hewlett-Packard) проходит данный сценарий. Например, утилита установки принтера HP LaserJet CP1525 вообще отказалась устанавливаться на Windows Server 2003 R2.
- Все используемые IP-адреса, имена серверов, компьютеров, доменов, пользователей, являются фиктивными и используются исключительно в демонстрационных целях.
- Информация приводится «AS IS».