Ошибка 0x0000007e при подключении сетевого принтера в Windows 7

Вчера еще прокачал свой скилл на предмет борьбы с Windows. При установке сетевого принтера HP LaserJet 4250 столкнулся с ошибкой следующего рода, операционная система нашла соответствующие драйвера, но на финальном этапе, аля finishing,  выскочило сообщение:

Ошибка 0x0000007e

В Google сразу нашелся ответ на предмет данной ошибки, да, де она есть, освещена в базе знаний компании Microsoft. Правда везде говорилось о том, что ошибка возникает в Windows 7 64 bit, однако у меня была 32-битная система. Но не суть дело, в базе знаний патч был и для x86.

Однако, его установка не решила проблему. Хороший однако патч, полезный :)

Решение оказалось нетривиальным и  нашлось тут:

  1. Откройте Пуск -> Устройства и принтеры -> «Установка принтера».
  2. В появившемся окне выберите «Добавить локальный принтер».
  3. Далее выберите «Создать новый порт». Тип порта — Local Port.
  4. Нажимаем «Далее». В окне «Имя порта» в текстовом поле необходимо ввести адрес принтера в таком виде ||Computer-name|Printer-share-name, где Computer-name — NETBios имя компьютера к которому подключен принтер, Printer-share-name — сетевое имя принтера. Обратите внимание, что вместо косой черты — \ необходимо вводить вертикальную — | (в моем случае это все же были обычные слэши). Если после нажатия на Ок, вы получаете ошибку «Сетевой путь не найден», значит в адресе где-то присутствует ошибка или опечатка. В этом случае, чтобы не мучиться, можно прямо из сетевого окружения перетащить ярлык принтера к себе на рабочий стол, открыть его свойства и скопировать путь к принтеру.
  5. Далее, если все правильно, появится стандартный диалог установки драйвера принтера. Мой драйвер корректно установился автоматически, но, как советует автор, в некоторых случаях необходимо предварительно скачать файлы драйвера, распаковать их и выбрать установку из указанного места.

После выполнения этих действий драйвер нормально установился, принтер ожил, засверкал своими диодами и довольно заурчал валиком.

Обновление 1. По материалам http://winitpro.ru/index.php/2014/07/09/oshibka-0x0000007e-pri-podklyuchenii-printera-hp-na-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 PCL 6 .Принт-сервер x86 и x64 версии драйвера HP Universal Printing PCL 6

Покопавшись на форумах HP и Technet-а, удалось найти информацию,  что в настройках универсального драйвера печати HP используется путь к файлу очереди печати для 32-битной системы (spool\drivers\w32x86\3), который  64-битный клиент найти не может, вследствие чего и появляется ошибка установки 0x0000007e. Путь к файлу указывается в параметрах принтера на принт сервере. В нашем примере это был файл  spool\DRIVERS\W32X86\3\hpcpn112.dll, но в общем случае конкретный файл библиотеки зависит от используемой версии универсального драйвера печати HP.

Чтобы решить эту проблему на 32 битном сервере печати нужно:

  1. Открыть редактор реестра (regedit.exe)
  2. Перейти в ветку HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers\ и развернуть ветку с именем принтера (в нашем примере это HP Color LaserJet 5550 PCL 6)Ветка реестра bidi в параметрах общего сетевого принтера HP
  3. В кусте, относящемуся к проблемному принтеру нужно в разделе CopyFiles удалить ветку BIDI.
    Примечание.  В продуктивной среде рекомендуется предварительно экспортировать в отдельный reg файл параметры удаляемой ветки. В это случае всегда можно будет откатиться к первоначальным настройкам.
  4. Перезапустите диспетчер печати (spooler) на клиенте
    net stop spooler
    net start spooler

    Перезапуск диспетчера печати

  5. Попробуйте на клиенте еще раз подключить принтер HP. Он должен установиться без ошибок.
    Примечание. К слову говоря, после всех манипуляций проблем с установкой принтеров на 32 битных клиентов не наблюдалось.

 

 

 

  • Дмитрий

    Аналогичная ошибка была. С сервера печати не подтягивался принтер скриптом. Добавление вручную тоже не помогало. Но данный странный способ «гвоздём и тапком» прибил принтер к пользователю 🙂 Спасибо!

  • Andy

    Спасибо помогло

  • Виталий

    При попытке таким способом подключиться, пишет отказано в доступе.

  • yy y

    Отличная инструкцияю Реально помогла (HP 2050)/

    Но только без вертикальных слэшев. Всё прошло отлично с обычным сетевым путём, типа

    \nameHP LaserJet P2050 Series PCL6

    Win 7 x64 /
    Спасибо !!!