Пользователи не могут печатать после установки пакета обновления, накопительного пакета обновления или исправления принтера на сервере Под управлением Windows

Эта статья поможет устранить проблему, из-за которой после установки пакета обновления или исправления принтера на сервере невозможно напечатать.

Применяется к: Windows Server 2012 R2
Исходный номер базы знаний: 832219

Симптомы

После установки пакета обновления, накопительного пакета обновления или исправления, которое обновляет файл Unidrvui.dll на Windows Server, у пользователей могут возникнуть следующие симптомы:

  • Когда клиент или сервер пытается печатать, служба очереди печати перестает отвечать (или "зависает"), и появляется следующее сообщение об ошибке:

    Не удается создать задание печати.

  • При попытке распечатать тестовую страницу из консоли сервера появляется следующее сообщение об ошибке:

    Не удалось распечатать тестовую страницу.

  • Мастера добавления драйвера или добавления принтера перестают отвечать на запросы при попытке установить драйвер с помощью устройств и принтеров или с помощью консоли управления печатью.

Причина

Это может произойти, если установить пакет обновления или пакет исправлений на сервере с большим количеством драйверов принтеров на основе Unidrv (PCL).

При установке пакета обновления или файла исправлений, который обновляет Unidrvui.dll на сервере с множеством драйверов принтеров PCL на основе Unidrv, сервер может потратить много времени (до 2 часов) на повторное создание файлов описания двоичных принтеров (bud files), используемых для повышения эффективности очереди для этих драйверов. В течение этого времени диспетчер очереди печати не может получать входящие задания печати и может возвращать клиентам сообщения, указывающие на то, что очередь печати заполнена. Это одноразовая операция синтаксического анализа, которая не выполняется после успешного повторного повторного выполнения проанализированных двоичных файлов .bud.

Двоичные файлы .bud, созданные из универсальных файлов описания принтера (GPD), необходимо повторно создать, так как версия файла синтаксического анализа GPD изменена. После синтаксического анализа всех драйверов PCL на основе Unidrv модуль очереди снова сможет получать задания печати. По этой причине корпорация Майкрософт рекомендует запланировать установку пакетов обновления и исправлений на серверах со многими драйверами принтеров PCL на основе Unidrv, чтобы обеспечить такую компиляцию bud-файла длительностью до двух часов.

Разрешение

Чтобы устранить эту проблему, запланируйте достаточно времени, чтобы сервер завершил синтаксический анализ всех драйверов принтера на основе Unidrv для каждого обновленного файла драйвера, а затем запланируйте достаточное время для каждого принтера, использующего эти файлы.

Обходной путь

Важно!

В этот раздел, описание метода или задачи включены действия, содержащие указания по изменению параметров реестра. Однако неправильное изменение параметров реестра может привести к возникновению серьезных проблем. Поэтому следует в точности выполнять приведенные инструкции. Для дополнительной защиты создайте резервную копию реестра, прежде чем редактировать его. Так вы сможете восстановить реестр, если возникнет проблема. Для получения дополнительной информации о том, как создать резервную копию и восстановить реестр, см. статью Сведения о резервном копировании и восстановлении реестра Windows.

Если вы не можете дождаться завершения сервера синтаксического анализа всех драйверов принтеров на основе Unidrv, вручную удалите все кэшированные файлы описания двоичных принтеров (файлы с расширением BUD) и автоматически создайте их повторно. В зависимости от скорости сервера это автоматическое повторное создание может быть завершено в течение более короткого времени. Как правило, эта операция завершается в течение 30 минут.

Примечание.

При запуске очереди печати он устанавливает более новую версию Unidrv.dll. В результате файлы .bud устарели. Файлы .bud являются скомпилированными версиями PPD-файлов и могут быть полностью повторно созданы из этих PPD-файлов. Из-за этого можно удалить файлы .bud.

Для этого выполните следующие действия:

  1. Остановите службу очереди печати. Для этого выполните следующую команду из командной строки:

    net stop spooler
    
  2. Выполните поиск всех bud-файлов, а затем убедитесь, что они помечены текущим временем и датой. Файлы отображаются с текущей датой.

  3. Удалите все файлы .bud с меткой даты и времени, которая находится до сегодняшней даты. Эти файлы находятся в следующей папке:

    %SYSTEMROOT%\System32\Spool\Drivers\w32x86\3

  4. Удалите следующий раздел реестра, если он существует:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\PostSPUpgrade

    Для этого выполните следующие действия:

    1. Нажмите кнопку Пуск, выберите команду Выполнить, в поле Открыть введите regedit и нажмите кнопку ОК.

    2. Найдите и щелкните следующий подраздел реестра:
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print

    3. В меню Реестр выберите Экспорт файла реестра.

    4. В поле Имя файла введите printkey и нажмите кнопку Сохранить.

      Примечание.

      Если позже потребуется восстановить раздел реестра print , это можно сделать, дважды щелкнув сохраненный файл Printkey.reg.

    5. Найдите и щелкните следующий подраздел реестра, если он существует:
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\PostSPUpgrade

    6. В меню Правка выберите команду Удалить, а затем нажмите кнопку Да , чтобы подтвердить удаление раздела реестра PostSPUpgrade .

      Примечание.

      Раздел реестра PostSPUpgrade может появить снова после перезагрузки компьютера. Это происходит, если существуют другие файлы .bud, которые еще не были проанализированы. После анализа этих файлов этот раздел реестра автоматически удаляется.

  5. Перезапустите сервер.

После перезапуска сервера функциональность печати становится доступной для пользователей примерно через 30 минут.

Дополнительная информация

В платформа .NET Framework 3.0 файл unidrv.dll теперь включен в печать XPS. Файл unidrv.dll также может активировать это поведение.