Проблемы с подключением сетевых принтеров после установки KB3170455
Обнаружили одну неприятную проблему с одним из июльский обновлений безопасности Microsoft. Речь о KB3170455, выпущенном 12 июля 2016 года. После установки данного обновления в домене могут возникнуть проблемы при попытке подключить сетевой принтер.
Проблема проявлялась следующим образом:
При попытке на доменных клиентах (Windows 10, Windows 7) установить (подключить) принтер с принт-сервера (на Windows Server 2008 R2), появляется ошибка.
Connect to Printer
A policy is in effect on your computer which prevents you from connecting to this print queue. Please contact your system administrator.
Установленная на данном компьютере политика не позволяет подключение к данной очереди печати. Обратитесь к системному администратору.
На некоторых моделях принтеров при попытке подключить сетевой принтер появлялось другое сообщение:
Do you trust this printer?
Windows needs to download and install a software driver from PrintServerName computer to print to PrinterName. Proceed only if you trust the PrintServerName and the network
Вы доверяете этому принтеру?
Windows требуется загрузить и установить драйвер с компьютера PrintServerName для печати на PrinterName…
При нажатии на кнопку «Установить драйвер» появляется окно UAC с предложением ввести учетные данные администратора. Хотя ранее пользователи могли без проблем подключать эти принтера (включена политика, позволяющая обычным пользователям устанавливать драйвера принтеров без прав локального администратора).
Путем сравнения установленных обновлений на проблемных компьютерах, обнаружили, что проблема наблюдается на компьютерах с установленным апдейтом KB3170455 (MS16-087: Description of the security update for Windows print spooler components: July 12, 2016). И действительно, при удалении этого обновления принтера подключаются корректно.
wusa.exe /uninstall /kb:3170455 /quiet /norestart
Но не все так просто, обновление на самом деле не кривое, а исправляет конкретную критическую уязвимость в подсистеме печати Windowsю. Обновление в том числе предполагает выдавать предупреждение пользователя при попытке установить недоверенные или неподписанные драйвера принтеров. Да и в Windows 10 это обновление вшито в кумулятивное обновление, и так просто его уже не откатишь. Так что простым удалением обновления проблему не решить.
В статье https://support.microsoft.com/en-us/kb/3170005 указаны критерии, которым должны соответствовать драйвера принтеров, чтобы они могли корректно устанавливаться на клиентах:
- Драйвер должен быть доверенным (подписан доверенной цифровой подписью)
- Драйвер должен быть упакованным (Package-aware print drivers). Установка неупакованных драйверов (non-package-aware v3 printer drivers) через режим Point and Print Restrictions невозможна
Поэтому Microsoft рекомендует:
- заменить драйвера на принт-серверах на упакованные (спецификация Package-aware V3). Определить является ли драйвер упакованным или нет, можно с помощью консоли Print Manager, откройте раздел с драйверами. Нас интересует колонка Packaged, для упакованных драйверов указан статус True. Останется включить политики Point and Print Restrictions (в разделах Computer Configuration > Policies > Admin Templates > Printers и в User Configuration > Policies > Admin Templates > Control Panel > Printers) и выставить Do not show warning or elevation prompt (Не показывать предупреждение или запрос на повышение прав). Дополнительно указываем FQDN имена доверенных принт-серверов.
- если драйвера являются устаревшими и обновить их нельзя, рекомендуется предустанавливать их на клиентских ПК. В этом случае при подключении принтеров проблем не возникнет.
Примечание. Для принтеров Canon, Sharp, KonicaMinolta есть небольшой трюк, позволяющий системе считать, что драйвер является упакованным. Для этого на принт-сервере, откройте ветку реестра HKLMSystemCurrentControlSetControlPrintEnviromentsWindowsx64Drivers…Driver name и для нужного драйвера измените значение ключа PrinterDriverAttributes, добавив к текущему значению 1. В моем случае значение атрибута было 5, я поменял его на 6. То же самое нужно сделать с атрибутом драйвера в ветке HKLMSystemCurrentControlSetControlPrintEnviromentsWindowsx NT x86Drivers…Driver name. После перезагрузки сетевые принтера Canon стали подключаться без предупреждений.
Windows 7
Проблемы с подключением сетевых принтеров после установки KB3170455