Ошибка 0x0000007e при подключении принтера HP на Windows 7 x64
Имеется сервер печати на 32 битной версии Windows (Windows Server 2003) на котором настроены несколько общих (расшаренных) принтеров HP. При попытке подключить принтер с этого сервера на 64 битном клиенте, клиент скачивает с принт-сервера нужную версию драйвера, но при попытке его установить возникает ошибка 0x0000007e:
После первичной диагностики проблемы на разных системах пришли к выводу, что ошибка 0x0000007e наблюдается только на 64 битных клиентах при попытке подключить общий сетевой принтер Hewlett Packard, установленный на 32 битном принт-сервере ( под управлением как на Windows Server 2003 x86, так и на Windows Server 2008 x86). Что характерно, проблема возникает не со всеми принтерами HP, а только с теми которые, используют универсальный драйвер печати HP PCL (HP Universal Print driver). Попытка подключить принтер обходным способом через локальный порт никакого эффекта не дала – ошибка сохранилась.
В первую очередь нужно проверить, что на сервере печати установлены как 32-х так и 64-х битные версии драйвера. Как мы видим, установлены x64 и x86 версии драйвера HP Universal Printing PCL6.
Покопавшись на форумах HP и Technet-а, удалось найти информацию, что в настройках универсального драйвера печати HP используется путь к файлу очереди печати для 32-битной системы (spool\drivers\w32x86\3), который 64-битный клиент найти не может, вследствие чего и появляется ошибка установки 0x0000007e. Путь к файлу указывается в параметрах принтера на принт сервере. В нашем примере это был файл spool\DRIVERS\W32X86\3\hpcpn112.dll, но в общем случае конкретный файл библиотеки зависит от используемой версии универсального драйвера печати HP.
Чтобы решить эту проблему на 32 битном сервере печати нужно:
Открыть редактор реестра (regedit.exe)
Перейти в ветку HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers\ и развернуть ветку с именем принтера (в нашем примере это HP Color LaserJet 5550 PCL 6)
В кусте, относящемуся к проблемному принтеру нужно в разделе CopyFiles удалить ветку BIDI.
Примечание. В продуктивной среде рекомендуется предварительно экспортировать в отдельный reg файл параметры удаляемой ветки. В это случае всегда можно будет откатиться к первоначальным настройкам.
Перезапустите диспетчер печати (spooler) на клиенте
net stop spooler net start spooler
Попробуйте на клиенте еще раз подключить принтер HP. Он должен установиться без ошибок.