Quando surgem problemas de impressão, podemos enfrentar casos simples (como a troca de um cabo), à casos que envolvem diversos componentes (protocolo de rede, versão do driver da impressora, código da aplicação cliente de impressão, etc).
Neste post, abordaremos um cenário de impressão através de uma sessão de Terminal Services 2008 que, se mal planejado, é comumente um gerador de diversos problemas de impressão, dada a complexidade e o envolvimento de diferentes componentes e softwares.
O problema
Você conecta-se ao Windows 2008, a partir de seu Windows XP, utilizando o Remote Desktop Client. Vale comentar alguns fatos:
Para que a tecnologia Easy Print funcione corretamente, precisamos que o cliente de Terminal Services atenda a estes requisitos:
- Remote Desktop Protocol - versão 6.1
- .Net Framework 3.0 Service Pack 1 (ou superior)
O Microsoft Windows XP com Service Pack 3, já inclui o suporte ao RDP 6.1, no entanto, a instalação do .Net Framework deve ser feita manualmente. Você pode usar este link: http://go.microsoft.com/fwlink/?LinkId=109422
A impressora, que está instalada em seu Windows XP, é mapeada na sessão de Terminal Services através do serviço redirecionamento do Terminal Services.
Ao tentar imprimir um documento, que está aberto na sessão de Terminal Services, você verifica duas situações comuns:
a. A fila de impressão na sessão de TS exibe o trabalho de impressão, e aparentemente ele é processado com sucesso, no entanto, nenhum documento é impresso, ou a impressora apenas imprime folhas em branco ou ainda, com caracteres inválidos.
b. A fila de impressão (no servidor ou cliente) exibe o trabalho de impressão com o status de erro. Através do Event Viewer, você consegue ver um evento com ID 6161, em seus eventos de sistema.
Possíveis soluções
O teste nº 1 deve ser – por mais óbvio que isso pareça – a impressão local. Se o computador consegue imprimir localmente (para a fila que está configurada nele), então podemos prosseguir com o testes no ambiente de TS.
Caso você tenha encontrado problemas aqui, procure suporte com o fornecedor de seu equipamento, e verifique o básico: cabos, versão de driver, mensagens no console do equipamento e suprimentos para impressão.
O event viewer do computador cliente também pode ajudar muito.
Ao acessar a sessão de Terminal Services, verifique se a impressora foi mapeada corretamente, e caso positivo, tente imprimir uma página de testes, através das propriedades da impressora.
Se a fila não foi mapeada, verifique o documento Terminal Services Printer Redirection. Neste post, não veremos problemas de redirecionamento de dispositivo.
É importante que seus testes sejam conduzidos em software Microsoft. Ao tentar imprimir, utilize a função “página de teste”, ou crie um documento no Notepad, ou qualquer outro aplicativo Microsoft. Isso porque, se a única aplicação a não imprimir for a sua aplicação (própria ou de terceiros), a Microsoft não tem como lhe fornecer suporte, e você terá que revisar a aplicação para entender o que está acontecendo, já que os produtos nativos do sistema operacional, imprimem.
Easy Print é a nova tecnologia, desenvolvida pela Microsoft, para facilitar os cenários de impressão através de sessões de Terminal Services. Para saber mais sobre isto, consulte: Terminal Services Printing. Apesar disso, como toda nova tecnologia, nem todos os dispositivos de sua rede estão prontos para funcionar com ela. Para começar, se você utiliza Windows XP, o pré-requisito para que o Easy Print funcione, é que você esteja com o Remote Desktop Protocol deve estar na versão 6.1 e o .NET Framework deve estar na versão 3.0 Service Pack 1. Versões superiores são igualmente aceitas. O Service Pack 3 do Windows XP, e o Service Pack 1 do Windows Vista já incluem o RDP 6.1, já a instalação do .NET Framework 3.5 Service Pack 1 pode ser obtida aqui. Você também pode obter a mais nova versão do RDP (versão 7) aqui, para os seus sistemas operacionais Microsoft.
Mesmo com todos esses requisitos atendidos, existem diversos outros fatores que podem impedir que seu dispositivo de impressão funcione bem com o Easy Print:
Driver disponibilizado pelo fabricante (Tente atualizar, mas nem sempre isto basta).
O modelo de impressora não consegue imprimir arquivos XPS, localmente. (O spool, gerado pelo Easy Print, trafega os dados em formato XPS, e esse é um bom teste).
Seu ambiente não possui os Service Packs mais recentes para seu Windows (incluindo as versões 2008, Vista e XP).
Solução: Este caso é sempre complexo – e às vezes, polêmico – pois a solução nem sempre inclui imprimir e manter o Easy Print ativo – como cenários com impressoras matriciais, algumas com drivers com tecnologia proprietária, ou aplicações que geram arquivos de spool com formato muito específico. Para todos os efeitos, o time de suporte Microsoft é capaz de trazer a melhor solução possível, com a análise de seu cenário específico, e a garantia de que todos os requisitos necessários estão sendo atendidos. Acesse o Suporte Microsoft para maiores informações.
Outra solução – ainda que você não queira utilizá-la definitivamente – é testar como seu servidor Microsoft Windows Server 2008 se comporta com e sem o Easy Print ativo.
Para isto, acesse o servidor e:
Execute a ferramenta “gpedit.msc”. Com o console do Group Policy Editor aberto, navegue por:
Computer configuration >> Administrative templates >> Windows Components >> Terminal Services >> Terminal Server >> Printer Redirection
Localize a política chamada: “Use Terminal Services Easy Print driver first” e dê um duplo clique.
Na tela que se abre, configure a política como “Disabled”.
Para concluir, em um prompt de comando, execute o comando gpupdate /force.
Isto desativará o Easy Print para as novas conexões de Terminal Services.
Se isto resolver o problema com sua impressora redirecionada, você pode considerar atualizar o driver da impressora, ou trocar o modelo de dispositivo, para fins de teste. Como sempre, você pode contatar o suporte Microsoft e pedir uma segunda opnião.
Motivo: Como dito antes, muitas vezes, os dispositivos podem não estar prontos para a tecnologia Easy Print, seu ambiente pode não conter todas as atualizações/correções disponíveis, e você pode ter requisitos muito específicos para impressão, que dificultam a utilização dessa tecnologia.
Terminal Services, Anti-Vírus, Redirecionamento de recursos e confusão
Todo dispositivo redirecionado por uma sessão de Terminal Services, depende do protocolo de Remote Desktop. O protocolo que dá suporte ao redirecionamento de impressoras escreve informações no registro do Windows, que são utilizadas durante a sessão de Terminal Services, e trabalham no mapeamento desses dispositivos.
Os softwares Anti-Vírus, no estrito cumprimento de seu dever, muitas vezes causam alguns efeitos colaterais indesejados, assim como técnicas e produtos de “hardering”, mal-utilizados ou mal-interpretados. Entre estes efeitos, temos a negação de permissões (visto na 1ª abordagem) e em alguns casos mais severos temos problemas com a escrita em registro, vital para o funcionamento do Windows e seus serviços.
As portas utilizadas no redirecionamento de impressoras, em sessões de Terminal Services, ficam na chave de registro:
“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceClasses\{28d78fad-5a12-11d1-ae5b-0000f803a8c2}\##?#Root#RDPDR#0000#{28d78fad-5a12-11d1-ae5b-0000f803a8c2}”
Teoricamente, durante sessões de Terminal Services que utilizam redirecionamento de dispositivos, você verá entradas com o formato “TSXXX” (onde XXX representa um número seqüencial para as portas em uso) abaixo dessa chave. Ainda, na teoria, é comum que estas entradas se renovem automaticamente, conforme a necessidade de redirecionamento de recursos.
O problema começa quando, por razões desconhecidas, a escrita para esta chave é negada ao sistema de impressão do Windows, e as entradas “TSXXX” começam a se acumular, sem renovação.
Solução: Se você estiver enfrentando esse cenário, a solução ocorre com os passos a seguir:
Finalize todas as sessões de Terminal Services. Você pode, no entanto, utilizar uma sessão de Terminal Services para executar os passos abaixo.
Acesse o console do Windows com um usuário administrativo, e, na janela “run” (executar), digite o comando regedit.exe.
Abra um novo “run” e execute o comando services.msc. Pare o serviço de impressão chamado “Print Spooler” (Spooler de impressão).
De volta ao editor de Registro do Windows, navegue até a chave:
“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceClasses\{28d78fad-5a12-11d1-ae5b-0000f803a8c2}\##?#Root#RDPDR#0000#{28d78fad-5a12-11d1-ae5b-0000f803a8c2}”
Faça um back-up desta chave e apague todas as entradas iniciadas em “TS”.
Adicionalmente, faça uma busca por arquivos com a extensão *.BUD (exemplo: TTY.bud) na partição do sistema operacional. Acrescente a extensão “.OLD” a eles.
Volte aos “Serviços” (services.msc) do Windows, e reinicie o serviço de impressão (Print Spooler).
Nesse ponto, a impressão deve voltar a funcionar para as novas sessões de Terminal Services, caso o problema esteja ligado a portas de redirecionamento bloqueadas em registro.
Motivo: Como vimos, alguns softwares e ações dos administradores podem bloquear porções do registro do Windows e arquivos de sistema, o que gera diversos problemas para o sistema operacional. Outras situações que podem levar a esse problema são desligamentos inesperados, vírus, atualizações e instalações de software malsucedidas, entre outras ocorrências, impossíveis de serem listas por completo, aqui.
Permissão ao spool
Consegui resolver um problema de impressão no TS, adicionando permissão de controle total a pasta spool a todos os usuários do domínio (ou pelo menos para os que irão usar a impressora).
Fonte do Artigo :
Muito bom o blog!!
ResponderExcluir