вторник, 28 января 2014 г.

Windows сопоставление драйвера принтера

Частенько мне приходилось сталкиваться с хорошими принтерами и кривыми драйверами для них под опредлнную версию ОС. Например не удалось мне найти корректный драйве для старичка HP LaserJet 1200 для Windows 7, пришлось использовать драйвер от HP 2200, пока я не узнал об HP Universal Printer Driver.

Также были проблемы с драйверами Canon MF4410 Windows Server 2003 x64, которые постоянно сыпали в лог ошибки вида:
CanonPrinterDriver3 error id 1
Описание:
Entry Function: DrvPrinterEvent, Base Address: 000000006A900000, Exception Address: 0000000078EEE5C6, Exception Code: ACCESS_VIOLATION
Так вот кривой драйвер путем манипуляции с реестром можно поменять на более близкий к нему. Это конечно костыль, но что делать когда "надо".

В реестре Windows явным образом можно задать имя любого драйвера, это значит можно взять любой драйвер для принтера и присвоить ему имя любого другово драйвера для принтера к примеру принтер на клиенте использует драйвер Canon MF4410, а мы хотим на сервере использовать для этого принтера серверный драйвер Canon MF3200. Если на сервер драйвер Canon MF3200будет иметь имя Canon MF4410 то он всегда будет подключать именно этот драйвер.
Для того чтобы сменить или добавить другое имя драйверу надо:
Запустить Regedit














Разберем это на примере переименования драйвера HP Universal Printing PCL 6 в HP LaserJet P3005 PCL 6.
1) Открыть ветку реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Environments\Windows NT x86\Drivers\Version-3
2) Находим ветку драйвера HP Universal Printing PCL 6, экспортировать ее в файл (она нам еще понадобиться позже). Далее изменяем имя ветки HP Universal Printing PCL 6 на HP LaserJet P3005 PCL 6.
3)Импортируем ветку HP Universal Printing PCL 6 назад в реестр - это надо что бы драйвер Universal тоже остался в системе с таким именем
Перезапускаем spooler и пользуемся драйвером HP Universal Printing PCL 6 с именем HP LaserJet P3005 PCL 6 и с оригинальным именем.

Манипуляции с реестром осуществляйте обязательно сделав резервную копию и экспорт ветки реестра.