Os usuários não podem imprimir depois que você instala um pacote de serviço, um roll-up de atualização ou um hotfix de impressora em um servidor baseado no Windows

Este artigo fornece ajuda para resolver um problema em que você não pode imprimir depois de instalar um pacote de serviço ou um hotfix de impressora em um servidor.

Aplica-se a: Windows Server 2012 R2
Número de KB original: 832219

Sintomas

Depois de instalar um service pack, um roll-up de atualização ou um hotfix que atualiza o arquivo Unidrvui.dll no Windows Server, os usuários poderão experimentar ambos os seguintes sintomas:

  • Quando um cliente ou servidor tenta imprimir, o serviço Print Spooler aparece para parar de responder (ou "pendurar") e a seguinte mensagem de erro é exibida:

    Não é possível criar trabalho de impressão.

  • Ao tentar imprimir uma página de teste do console do servidor, você recebe a seguinte mensagem de erro:

    Falha na impressão da página de teste.

  • Os assistentes Adicionar Driver ou Adicionar Impressora param de responder quando você tenta instalar o driver usando Dispositivos e Impressoras ou usando o Console de Gerenciamento de Impressão.

Motivo

Esse comportamento poderá ocorrer se você instalar o pacote de serviço ou o pacote hotfix em um servidor que tem muitos drivers de impressora PCL (Linguagem de Controle de Impressora) baseados em Unidrv.

Quando você instala um pacote de serviço ou um arquivo hotfix que atualiza Unidrvui.dll em um servidor com muitos drivers de impressora PCL baseados em Unidrv, o servidor pode passar um longo tempo (até 2 horas) regenerando os arquivos de descrição da impressora binária analisados (arquivos.bud) que são usados para aumentar a eficiência do spooler para esses drivers. Durante esse tempo, o Print Spooler não pode receber trabalhos de impressão de entrada e pode retornar mensagens para clientes que indicam que a fila de impressão está cheia. Essa é uma operação de análise única e não ocorre depois que os arquivos .bud binários analisados são regenerados com êxito.

Os arquivos .bud binários gerados a partir de arquivos GPD (descrição de impressora genérica) devem ser regenerados porque a versão do arquivo de analisador de GPD é alterada. Depois que todos os drivers de PCL baseados em Unidrv forem analisados, o spooler poderá receber novamente trabalhos de impressão. Por causa disso, a Microsoft recomenda que você agende instalações de service pack e hotfix em servidores com muitos drivers de impressora PCL baseados em Unidrv para acomodar essa compilação de arquivos .bud de até duas horas.

Resolução

Para resolve esse problema, agende tempo suficiente para que o servidor conclua a análise de todos os drivers de impressora baseados em Unidrv para cada arquivo de driver atualizado e agende tempo suficiente para cada impressora que usa esses arquivos.

Solução alternativa

Importante

Esta seção, método ou tarefa contém etapas que descrevem como modificar o Registro. Entretanto, sérios problemas poderão ocorrer caso você modifique o Registro incorretamente. Portanto, siga essas etapas cuidadosamente. Para mais proteção, faça o backup do registro antes de modificá-lo. Em seguida, você poderá restaurar o registro se ocorrer um problema. Para saber mais sobre como fazer o backup e restaurar o registro, consulte Como fazer o backup e restaurar o registro no Windows.

Se você não puder esperar que o servidor conclua a análise de todos os drivers de impressora baseados em Unidrv, remova manualmente todos os arquivos de descrição da impressora binária em cache (arquivos.bud) e deixe-os ser recriados automaticamente. Dependendo da velocidade do servidor, essa recriação automática pode ser concluída em um tempo menor. Normalmente, essa operação é concluída dentro de 30 minutos.

Observação

Quando o Print Spooler é iniciado, ele instala uma versão mais recente do Unidrv.dll. Como resultado, os arquivos .bud estão desatualizados. Os arquivos .bud são as versões compiladas de arquivos .ppd e podem ser completamente regenerados desses arquivos .ppd. Por causa disso, você pode remover os arquivos .bud.

Para fazer isso, siga estas etapas:

  1. Pare o serviço Print Spooler. Para fazer isso, execute o seguinte comando de um prompt de comando:

    net stop spooler
    
  2. Pesquise todos os arquivos .bud e verifique se eles estão carimbados com a hora e a data atuais. Os arquivos aparecem com a data de hoje.

  3. Remova todos os arquivos .bud que tenham um carimbo de data e hora antes da data de hoje. Esses arquivos estão localizados na seguinte pasta:

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

  4. Remova a seguinte chave do registro se ela existir:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\PostSPUpgrade

    Para fazer isso, siga estas etapas:

    1. Clique em Iniciar e em Executar, digite regedit na caixa Abrir e clique em OK.

    2. Localize e clique na subchave do registro a seguir:
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print

    3. No menu Registro, clique em Exportar Arquivo do Registro.

    4. Na caixa Nome do arquivo , digite a chave de impressão e clique em Salvar.

      Observação

      Se mais tarde você precisar restaurar a chave do Registro de Impressão , poderá fazê-lo clicando duas vezes no arquivo Printkey.reg que salvou.

    5. Localize e clique na subchave do registro a seguir se ela existir:
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\PostSPUpgrade

    6. No menu Editar , clique em Excluir e clique em Sim para confirmar a remoção da chave do registro PostSPUpgrade .

      Observação

      A chave do registro PostSPUpgrade pode reaparecer depois que você reiniciar o computador. Esse comportamento ocorrerá se houver outros arquivos .bud que ainda não foram analisados. Depois que esses arquivos forem analisados, essa chave do registro será removida automaticamente.

  5. Reiniciar o servidor.

Depois de reiniciar o servidor, a funcionalidade de impressão estará disponível para os usuários após cerca de 30 minutos.

Mais informações

No .NET Framework 3.0, o arquivo unidrv.dll agora está incluído com impressão XPS. O arquivo unidrv.dll também pode disparar esse comportamento.