Ошибка 0x0000011b при подключении к сетевому принтеру: причины и решение
Ошибка 0x0000011b при подключении к сетевому принтеру появляется, когда принт-сервер требует шифрованный RPC-вызов, а клиент не может его выдержать: нет обновления, нет доменной аутентификации или подключение идёт по IP. Ниже — как это проверить, три способа исправить в порядке безопасности и разбор случая на 49 рабочих местах.
Что означает ошибка 0x0000011b и откуда она взялась
Эту ошибку мне присылают в заявках чаще любой другой по печати. Человек открывает «Подключиться к принтеру», вводит \\сервер\имя, и Windows отвечает кодом 0x0000011b. Принтер при этом физически исправен, на сервере он в статусе «Готов», у соседа через стол всё печатает. Если вы ведёте поддержку пользователей в офисе сами, то эту картину наверняка видели: один компьютер не подключается, другой подключается, и никакой видимой разницы между ними нет.
Причина лежит в безопасности. Microsoft закрывала уязвимость CVE-2021-1678 в диспетчере печати и усилила проверку подлинности для RPC-интерфейса IRemoteWinspool, по которому клиент общается с принт-сервером. Согласно статье KB4599464, обновление от 12 января 2021 года добавило параметр реестра RpcAuthnLevelPrivacyEnabled: по умолчанию он тогда был равен 0, то есть усиление включали вручную. Обновления от 14 сентября 2021 года перевели режим принудительного применения в положение «включено по умолчанию», даже если параметра в реестре нет. С этого момента повышенный уровень проверки подлинности стал нормой, и клиенты, которые его не выдерживают, получают отказ при подключении.
Сразу оговорюсь: в самой статье Microsoft код 0x0000011b не упоминается, там сказано лишь, что печать у клиента без нужного обновления «ломается». Связь кода с этим изменением я знаю из практики и из многочисленных разборов этой проблемы в профильных изданиях. Поэтому ниже я не обещаю, что любая 0x0000011b именно про RPC. Сначала диагностика, потом лечение.
Как убедиться, что это именно проблема RPC, а не драйвер или сеть
Первое, что я делаю, — разделяю «не достучался» и «достучался, но не пустили». Если сервер не отвечает по имени, у вас будет другая ошибка и другой путь: проверяйте DNS и доступность общего ресурса. Если сервер отвечает, ресурс открывается в проводнике, а подключение принтера падает с 0x0000011b, мы в нужном месте. Проверка занимает пару минут и экономит час раздумий.
Дальше смотрю три вещи. Во-первых, как именно клиент обращается к серверу: по имени или по IP-адресу. Во-вторых, входит ли клиент в тот же домен, что и сервер, и с какой учётной записью работает пользователь. В-третьих, какие обновления установлены на клиенте и на сервере. Это три самые частые причины, и две из них вы исправите без единого изменения в реестре.
Состояние принтеров на сервере и на клиенте удобно смотреть из PowerShell. Командлет Get-Printer входит в модуль PrintManagement, который есть в Windows 8 / Server 2012 и новее, а параметр -ComputerName позволяет заглянуть на удалённый сервер. Так вы увидите, опубликована ли очередь и какое у неё имя.
Get-Printer -ComputerName PRINT01 | Format-List Name, ShareName, DriverName, PortName, SharedЗатем проверьте, есть ли параметр на сервере. Если его нет, значит, действует поведение по умолчанию для вашей сборки: у системы с обновлениями от 14 сентября 2021 года и новее это включённое усиление. Сам по себе наличный параметр равный единице тоже означает, что усиление включено. Ноль означает, что вы или кто-то до вас отключили защиту.
Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Print" -Name RpcAuthnLevelPrivacyEnabled -ErrorAction SilentlyContinueСпособ 1: обновить клиент и подключаться по имени с доменной учётной записью
Это единственный способ, который я считаю настоящим решением, а не заплаткой. По документации Microsoft, прежде чем включать принудительный режим на сервере, нужно убедиться, что на всех клиентах стоит обновление от 12 января 2021 года или новее. Если клиент его не получил, подключение через интерфейс IRemoteWinspool работать не будет. В 2026 году такие клиенты встречаются редко, но встречаются: терминал на ресепшене, который лет пять не подключали к обновлениям, ноутбук подрядчика, компьютер в подсобке с «временным» образом.
Вторая половина способа — подключение по имени. Мне встречалось, что админ когда-то прописал в ярлыках и скриптах \\192.0.2.15\HP-Reception вместо имени сервера. При обращении по IP Windows по умолчанию не может использовать Kerberos (поддержку IP-адресов в SPN нужно включать отдельно), и проверка откатывается на NTLM, а в доменных сетях под усиленные требования проще всего подпадают именно такие подключения. Я не нашёл у Microsoft прямого описания этого механизма применительно к 0x0000011b, поэтому не буду выдавать его за доказанную причину, но в моей практике перевод ярлыков на имя сервера снимал проблему в большинстве случаев. Если у вас есть возможность — подключайте по полному имени, например \\print01.example.com\HP-Reception.
Третья половина — учётная запись. Компьютер вне домена или в другом лесу не получит доменный билет автоматически. Для таких машин я создаю на сервере отдельную учётную запись с правом печати на нужные очереди и сохраняю её в диспетчере учётных данных клиента. Команда cmdkey записывает имя и пароль для конкретного узла. Я указываю ключ /pass без значения: по документации cmdkey в этом случае запросит пароль интерактивно, и в истории команд он не останется. Если /pass не указать совсем, сохранится только имя, а пароль Windows будет спрашивать при каждом обращении к серверу.
cmdkey /add:print01.example.com /user:PRINT01\svc-print /pass
cmdkey /list:print01.example.comПосле этого подключаем принтер уже штатным командлетом Add-Printer с параметром -ConnectionName. Это тот же вызов, что и через графический мастер, только без лишних диалогов.
Add-Printer -ConnectionName \\print01.example.com\HP-ReceptionЕсли вы строите печать с нуля и хотите, чтобы такие вещи не всплывали на каждом новом компьютере, раздайте принтеры групповой политикой. Я разбирал это подробно: в статье про управление печатью через GPO показано, как подключать очереди по имени и не трогать каждый компьютер руками.
Способ 2: временно отключить усиление RPC на принт-сервере
Бывает, что способ 1 неприменим: клиент нельзя обновить, он не в домене и вообще это кассовый терминал с софтом, который трогать нельзя. Тогда остаётся временная мера на стороне сервера. Microsoft описывает параметр так: HKLM\SYSTEM\CurrentControlSet\Control\Print, значение RpcAuthnLevelPrivacyEnabled, тип REG_DWORD. Единица включает режим принудительного применения, ноль его отключает; ноль официально не рекомендуется, и на странице прямо сказано, что при нём устройства не защищены. Выбирая эту меру, вы осознанно возвращаете диспетчеру печати уязвимость, поэтому делайте её как временную, с датой отмены в календаре.
В публикациях 2021 года советуют менять параметр и на сервере, и на клиентах. Документация Microsoft говорит о серверной стороне: «новая политика и значение реестра на стороне сервера». Я всегда начинаю с одного сервера и проверяю результат, а клиентов трогаю, только если сервера не хватило. Проверьте это на своём окружении, потому что сборки Windows разные и заранее мне вам это гарантировать нельзя.
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Print" -Name RpcAuthnLevelPrivacyEnabled -PropertyType DWord -Value 0 -Force
Restart-Service -Name SpoolerПерезапуск службы нужен: Microsoft пишет, что после изменения требуется перезагрузка устройства или перезапуск службы диспетчера печати. Помните, что при перезапуске Spooler текущие задания в очереди могут пропасть, поэтому делайте это в окно, когда никто не печатает счета и ключи от номеров. Вернуть защиту так же просто.
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Print" -Name RpcAuthnLevelPrivacyEnabled -Value 1
Restart-Service -Name SpoolerЧего делать не стоит: удалять обновление и ломать Point and Print
В интернете до сих пор самый популярный совет — удалить сентябрьское обновление. Я так не делаю. Во-первых, вы выкидываете вместе с ним закрытые уязвимости, а на этой же ветке лежат исправления для PrintNightmare. Во-вторых, обновление вернётся при следующем цикле, и проблема всплывёт опять, причём в самый неудобный день. Если нужна быстрая мера, лучше временный параметр на сервере, чем снос патчей.
Отдельная история — установка драйверов с принт-сервера. После обновлений от 10 августа 2021 года Windows по умолчанию требует права администратора для установки и обновления драйверов принтера через Point and Print. Это управляется параметром RestrictDriverInstallationToAdministrators по пути HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Printers\PointAndPrint: единица (или отсутствие параметра) оставляет требование, ноль делает систему уязвимой, и Microsoft допускает его только как временную меру. Если пользователь видит запрос на повышение прав при подключении принтера, это не 0x0000011b, а именно эта защита.
Заодно проверьте, что в тех же настройках PointAndPrint у вас не лежат значения NoWarningNoElevationOnInstall и UpdatePromptSettings, отличные от нуля: Microsoft предупреждает, что из-за них устройство остаётся уязвимым к CVE-2021-34527. Решение для драйверов я держу в групповой политике: драйвер ставит администратор один раз на сервере, а клиентам он приходит по умолчанию. Если очередь после всех правок всё равно зависает, дело уже в другом, и вам пригодится разбор зависшей очереди печати.
Сводка: какой способ выбрать и в каком порядке действовать
Чтобы не принимать решение по настроению, я держу в голове короткую таблицу. Она отвечает на вопрос, что делать, когда подключение не проходит, а времени на разбор нет.
| Ситуация | Что делаю | Риск |
|---|---|---|
| На клиенте нет обновления от 12.01.2021 или новее | Ставлю обновления, перепроверяю подключение | Нет |
| Подключение идёт по IP | Меняю на имя сервера в ярлыках и GPO | Нет |
| Клиент вне домена | Отдельная учётная запись и cmdkey на узел | Минимальный |
| Клиент нельзя обновить | Временно RpcAuthnLevelPrivacyEnabled = 0 на сервере | Уязвимость открыта |
| Печать нужна только с одной машины | Прямой TCP/IP-порт к принтеру без сервера | Теряете учёт и квоты |
Порядок моих действий всегда один: диагностика, обновления и имя сервера, учётная запись, и только потом реестр. Первые три шага закрывают у меня большинство обращений. Реестр я трогаю, когда остальное недоступно, и обязательно фиксирую в тикете, что мера временная. Если у вас несколько принт-серверов, не копируйте исправление на все сразу: сначала один, проверили, дальше следующий.
Если печать у вас давно живёт как попало и каждое обновление Windows превращается в лотерею, имеет смысл один раз собрать её по-человечески: единый сервер, подключение по имени, драйверы под контролем, принтеры раздаются политикой. Про выбор самих устройств и сервера печати для небольшого офиса у нас есть отдельный материал про принт-сервер и МФУ.
Разбор из практики: отель «Ночлег и покой», 49 рабочих мест
Отель «Ночлег и покой» — 49 рабочих мест: ресепшен, бухгалтерия, хозяйственная служба, отдел бронирования, несколько терминалов в подсобках. Печать собрана на одном принт-сервере, семь общих очередей, из них две на ресепшене для счетов и регистрационных карточек. Весной сервер перенесли с устаревшей системы на свежую установку Windows Server, и в понедельник утром пять компьютеров перестали подключать принтеры с кодом 0x0000011b. Остальные сорок четыре работали как обычно.
Четыре машины из пяти мы разобрали за три часа. Три из пяти компьютеров оказались давно не обновлявшимися терминалами из подсобных помещений: обновления не ставились месяцами из-за экономии трафика на узле. Мы поставили накопительные обновления, подключение пошло без единой правки реестра. Четвёртый компьютер стоял в пристройке вне домена и подключался по IP-адресу в стиле 192.0.2.15. Мы завели на сервере отдельную учётную запись с правом печати только на две нужные очереди, сохранили её через cmdkey для имени сервера и перевели подключение на имя.
Пятый случай оказался самым интересным: на старом терминале работала программа учёта, которую нельзя было ни обновить, ни переустановить. В понедельник мы закрыли его временным RpcAuthnLevelPrivacyEnabled = 0 на сервере, чтобы не останавливать выписку счетов, и поставили в тикете дату отката на вторник. Во вторник утром настроили для этого терминала прямую печать на сетевой принтер через TCP/IP-порт, а в обеденное окно вернули параметр на сервере в единицу и перезапустили службу. Итог: ослабленная защита прожила один рабочий день, все пять обращений закрыты за полтора дня, защита сервера включена, обходных настроек в итоге осталось ноль.
Вывод, который я из этого делаю для себя: переезд принт-сервера почти всегда вскрывает «забытые» клиенты. Поэтому перед миграцией мы теперь выгружаем список машин с датой последнего обновления и подключаемся к ним в тестовом режиме заранее. Это занимает полчаса, а сэкономило бы клиенту утро в сезон заездов.
Частые вопросы
Что означает ошибка 0x0000011b при подключении принтера?
Чаще всего это отказ при обращении клиента к принт-серверу из-за усиленной проверки подлинности RPC (CVE-2021-1678). В обновлениях от 14 сентября 2021 года она включена по умолчанию, и клиенты без нужного обновления или нормальной аутентификации подключиться не могут.
Где находится параметр RpcAuthnLevelPrivacyEnabled?
В ветке HKLM\SYSTEM\CurrentControlSet\Control\Print, тип REG_DWORD. Значение 1 включает принудительный режим, 0 его отключает. Менять нужно на сервере, после правки требуется перезапуск службы диспетчера печати или перезагрузка.
Безопасно ли ставить RpcAuthnLevelPrivacyEnabled в 0?
Нет, Microsoft не рекомендует такое значение: при нём защита от CVE-2021-1678 отключена. Используйте его как временную меру, лучше сначала обновить клиента и подключаться по имени сервера.
Нужно ли править реестр на клиентах?
Документация Microsoft описывает параметр как серверный. В сторонних разборах советуют менять и на клиентах. Начинайте с сервера и проверяйте результат, клиентов трогайте, только если сервера оказалось недостаточно.
Можно ли просто удалить обновление, из-за которого появилась ошибка?
Технически можно, но я не советую: вместе с ним уйдут и другие исправления безопасности диспетчера печати, а обновление вернётся при следующем цикле. Надёжнее обновить клиента или временно изменить параметр на сервере.
Источники
- Microsoft Support: KB4599464 — Printer RPC binding changes for CVE-2021-1678 — Проверены путь и имя параметра RpcAuthnLevelPrivacyEnabled, значения 0 и 1, даты 12.01.2021 и 14.09.2021, серверная сторона, перезапуск службы: https://support.microsoft.com/kb/4599464
- Microsoft Support: KB5005652 — Point and Print default driver installation behavior — Проверен параметр RestrictDriverInstallationToAdministrators и поведение по умолчанию после 10.08.2021: https://support.microsoft.com/kb/5005652
- Microsoft Support: KB5005010 — Restricting installation of new printer drivers — Проверен путь HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Printers\PointAndPrint и значения NoWarningNoElevationOnInstall, UpdatePromptSettings: https://support.microsoft.com/en-us/topic/kb5005010-restricting-installation-of-new-printer-drivers-after-applying-the-july-6-2021-updates-31b91c02-05bc-4ada-a7ea-183b129578a7
- Microsoft Learn: Add-Printer — Проверен синтаксис Add-Printer -ConnectionName \\server\printer: https://learn.microsoft.com/en-us/powershell/module/printmanagement/add-printer
- Microsoft Learn: Get-Printer — Проверены параметры -ComputerName, -Name и вывод свойств принтера: https://learn.microsoft.com/en-us/powershell/module/printmanagement/get-printer
- Microsoft Learn: cmdkey — Проверен синтаксис /add, /user, /list, /delete: https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/cmdkey


