Помилка 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 printerOperation failed with error 0x0000007e.
У російській версії ОС:
установка принтера
Підключення до принтера
Windows не вдається підключити до принтера.
В ході операції сталася помилка 0x0000007e.
На комп'ютерах з Windows 10 помилка підключення принтера виглядає трохи по-іншому:
Operation could not be completed (error 0x0000007e).
The specified module could not be found.
При цьому проблем з підключенням і установкою мережевих принтерів з принт-сервера на 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:
- Відкрити редактор реєстру (regedit.exe).
- Перейти в гілку HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Print \ Printers \ і розгорнути гілку з ім'ям принтера (в нашому прикладі це HP Color LaserJet 5550 PCL 6).
- У гілці реєстру, яка належить до проблемного принтеру потрібно в розділі CopyFiles видалити гілку BIDI цілком.Примітка. В продуктивної середовищі рекомендується попередньо експортувати до окремого reg файл параметри видаляється гілки. У цей випадку завжди можна буде відкотитися вихідні установки.
- Перезапустіть диспетчер друку (Print spooler) на клієнті:
net stop spooler
net start spooler
- Після видалення гілки реєстру BIDI на сервері, спробуйте на клієнті Windows 10 ще раз підключити мережевий принтер HP. Він повинен успішно встановитися без помилок.
У тому випадку, якщо цей варіант не спрацював, або у вас помилка 0x0000007e з'являється при підключенні принтерів інших виробників (не компанією HP), як обхідного рішення можна спробувати підключити принтер через локальний порт. Ось як це зробити:
- Через панель управління додайте в систему новий (локальний!!!) Принтер (Додати локальний або мережевий принтер з параметрами, заданими вручну).
- Вкажіть, що потрібно створити новий локальний порт (тип порту Local Port).
- Як ім'я порту потрібно вказати повний UNC шлях до мережного принтера. Наприклад, якщо ім'я комп'ютера, до якого підключений принтер - OfficePC1, а ім'я принтера із загальним доступом на ньому Xerox3320, то UNC адресу цього принтера буде виглядати так:
\\ OfficePC1 \ Xerox3320
, або можна вказувати IP адреса комп'ютера замість імені\\ 192.168.1.100 \ Xerox3320
. - Після цього залишилося вибрати (або встановити) відповідний драйвер принтера.
Є ще один схожий варіант підключення такого мережного принтера.
- Видаліть драйвер підключається принтера з локального сховища. Властивості сервера друку -> вкладка Драйвери -> виберіть драйвер (як 32 так, і 64 бітний) і натисніть кнопку Видалити (Remove).
- Спочатку створюється локальний принтер з підключенням через новий порт lpt.
- Потім за допомогою команди створюється постійне зіставлення даного віртуального LPT порту з UNC адресою мережевого принтера:
net use LPT2 \\ OfficePC1 \ Xerox3320 / persistent: yes