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

Ошибка 0x0000007e при подключении сетевого принтера встречается довольно часто как в Windows 10, так и Windows 7. В большинстве случае она наблюдается, когда принтер напрямую подключен к другому компьютеру с Windows (принт-серверу) и к нему открыт общий сетевой доступ.

В моем случае ошибка появилась в следующей конфигурации. Имеется сервер печати на 32 битной версии Windows Server 2008 на котором настроены несколько общих (расшаренных) принтеров Hewlett-Packard. При попытке подключить любой принтер с этого сервера на компьютере с 64 битной Windows 10 или Windows 7, операционная система успешно скачивает с принт-сервера нужную версию драйвера принтера HP, но при попытке его установить возникает ошибка 0x0000007e .

В Windows 7 ошибка подключения сетевого принтера выглядит так:

Windows cannot connect to the printer
Operation failed with error 0x0000007e.

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

В русской версии ОС:

Установка принтера
Подключение к принтеру
Windows не удается подключить к принтеру.
В ходе операции произошла ошибка 0x0000007e.

На компьютерах с Windows 10 ошибка подключения принтера выглядит немного по-другому:

Operation could not be completed (error 0x0000007e).
The specified module could not be found.

Операция не может быть завершена (ошибка 0x0000007e). Указанный модуль не найден.

Операция не может быть завершена (ошибка 0x0000007e). Указанный модуль не найден

При этом проблем с подключением и установкой сетевых принтеров с принт-сервера на 32 битных редакциях Windows нет.
После диагностики проблемы на разных версиях Windows, я пришел к выводу, что ошибка 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 w 32x 863 ), который 64-битный клиент найти не может, вследствие чего и появляется ошибка установки 0x0000007e. Путь к файлу указывается в параметрах принтера на принт-сервере. В нашем примере это был файл spoolDRIVERSW32X863hpcpn112.dll, но в общем случае конкретный файл библиотеки зависит от используемой версии универсального драйвера печати HP. Т.е. 32 битная версия драйвера печати HP Universal Printing оказалась несовместима с x64 версиями Windows. Но это можно исправить вручную.

Итак, чтобы решить эту проблему нужно на сервере-печати (компьютере), к которому подключен принтер и через который предоставляется общий доступ нужно удалить поврежденный (некорректный) ключ реестра драйвера печати HP:

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

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

  5. После удаления ветки реестра BIDI на сервере, попробуйте на клиенте Windows 10 еще раз подключить сетевой принтер HP. Он должен успешно установиться без ошибок.

В том случае, если этот вариант не сработал, или у вас ошибка 0x0000007e появляется при подключении принтеров других производителей (не HP), в качестве обходного решения можно попытаться подключить принтер через локальный порт . Вот как это сделать:

  1. Через панель управления добавьте в систему новый ( локальный!!! ) принтер (Добавить локальный или сетевой принтер с параметрами, заданными вручную). добавить локальный сетевой принтер в Windows 10
  2. Укажите, что нужно создать новый локальный порт (тип порта Local Port).
  3. В качестве имени порта нужно указать полный UNC путь к сетевому принтеру. Например, если имя компьютера, к которому подключен принтер — OfficePC1, а имя принтера с общим доступом на нем Xerox3320, то UNC адрес этого принтера будет выглядеть так: \OfficePC1Xerox3320 , либо можно указывать IP адрес компьютера вместо имени \192.168.1.100Xerox3320 . Подключить сетевой принтер через UNC адрес
  4. После этого осталось выбрать (или установить) подходящий драйвер принтера.

Есть еще один похожий вариант подключения такого сетевого принтера.

  1. Удалите драйвер подключаемого принтера из локального репозитория. Свойства сервера печати -> вкладка Драйверы -> выберите драйвер (как 32 так, и 64 битный) и нажмите кнопку Удалить (Remove). удалить драйвер с принт сервера
  2. Сначала создается локальный принтер с подключением через новый порт lpt.
  3. Затем с помощью команды создается постоянное сопоставление данного виртуального LPT порта с UNC адресом сетевого принтера: net use LPT2 \OfficePC1Xerox3320 /persistent:yes подключить сетевой принтер через локальный lpt порт
EnglishRussianUkrainian