Помилка 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 can not connect to the printer
Operation failed with error 0x0000007e.

У російській версії ОС:
установка принтера
Підключення до принтера
Windows не вдається підключити до принтера.
В ході операції сталася помилка 0x0000007e.
На комп'ютерах з Windows 10 помилка підключення принтера виглядає трохи по-іншому:
Operation could not be completed (error 0x0000007e).
The specified module could not be found.

Операція не може бути завершена (помилка 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.

Покопавшись на форумах HP і Technet-а, мені вдалося знайти інформацію, що в налаштуваннях універсального драйвера друку HP використовується фіксований шлях до файлу черги друку для 32-бітної системи (spool\ drivers\ w32x86 \ 3), Який 64-бітний клієнт знайти не може, внаслідок чого і з'являється помилка установки 0x0000007e. Шлях до файлу вказується в параметрах принтера на принт-сервері. У нашому прикладі це був файл spool \ DRIVERS \ W32X86 \ 3 \ hpcpn112.dll, але в загальному випадку конкретний файл бібліотеки залежить від використовуваної версії універсального драйвера друку HP. Тобто 32 бітна версія драйвера друку HP Universal Printing виявилася несумісна з x64 версіями Windows. Але це можна виправити вручну.

Отже, щоб вирішити цю проблему потрібно на сервері-друку (комп'ютері), до якого підключений принтер і через який надається загальний доступ потрібно видалити пошкоджений (некоректний) ключ реєстру драйвера друку HP:

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

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

У тому випадку, якщо цей варіант не спрацював, або у вас помилка 0x0000007e з'являється при підключенні принтерів інших виробників (не компанією HP), як обхідного рішення можна спробувати підключити принтер через локальний порт. Ось як це зробити:

  1. Через панель управління додайте в систему новий (локальний!!!) Принтер (Додати локальний або мережевий принтер з параметрами, заданими вручну).
  2. Вкажіть, що потрібно створити новий локальний порт (тип порту Local Port).
  3. Як ім'я порту потрібно вказати повний UNC шлях до мережного принтера. Наприклад, якщо ім'я комп'ютера, до якого підключений принтер - OfficePC1, а ім'я принтера із загальним доступом на ньому Xerox3320, то UNC адресу цього принтера буде виглядати так: \\ OfficePC1 \ Xerox3320, або можна вказувати IP адреса комп'ютера замість імені \\ 192.168.1.100 \ Xerox3320.
  4. Після цього залишилося вибрати (або встановити) відповідний драйвер принтера.

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

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