Como instalar uma impressora de rede para todos os usuários do Windows

O Windows 2000, XP, Server 2003, Vista, e Server 2008 possuem a capacidade de instalar uma impressora de rede que fique disponível automaticamente para todos os usuários que autenticarem-se no computador. Infelizmente, o assistente de Adicionar impressora não expõe esta capacidade – ele somente pode adicionar impressoras de rede para o usuário autenticado atualmente no sistema, mesmo que o usuário seja administrador [3]. Para adicionarmos uma impressora de rede globalmente (para todos os usuários), precisamos usar uma ferramenta diferente. [2] Note que o procedimento abaixo irá adicionar a impressora permanentemente, assim como o assistente Adicionar impressora. Portanto, não faz sentido executar este comando como script de logon ou de iniciação por que resultará em múltiplas instâncias da impressora em cada computador, cada vez que o usuário autentica-se no computador ou quando o computador é reiniciado. [3]

A biblioteca printui.dll é o arquivo executável que contém as funções usadas pelos diálogos de configuração de impressoras. [4] Estas funções podem ser realizadas no mesmo computador que possuí a printui.dll em execução ou à partir de outro computador (ex. remotamente). O comando de propósito geral rundll32 pode ser usado para executar a função PrintUIEntry da printui.dll. [2]

Algumas coisas para levar em consideração [2]:

  1. A função para adicionar uma impressora globalmente é /ga. Globalmente neste contexto significa que a ação se aplica a todos os usuários que autenticarem-se no computador no qual ela foi adicionada.
  2. A função correspondente para remover uma impressora global é /gd. Se você remover uma impressora global através da função Remover dispositivo no menu de contexto da impressora, ela parecerá ter sido removida, porém ela reaparecerá quando o serviço Spooler de impressão for reiniciado.
  3. Somente impressoras adicionadas previamente usando a função /ga podem ser removidas usando /gd.
  4. Você precisa possuir privilégios administrativos no computador alvo para usar estas funções.
  5. Se uma impressora for adicionada remotamente usando a função /ga, ela não será exibida para o usuário até que o serviço Spooler de impressão seja reiniciado ou no próximo login do usuário. Você pode reiniciar o Spooler de impressão remotamente usando os comandos:
    sc \\targetcomputername stop spooler
    sc \\targetcomputername start spooler
    

O arquivo AddGlobalPrinterRemotely.cmd abaixo possuí os comandos para adicionar uma impressora de rede remotamente e reiniciar o serviço Spooler de impressão no computador alvo. [2]

Cole as linhas abaixo em seu próprio arquivo .cmd (ex. AddGlobalPrinterRemotely.cmd) [2]:

@Echo off
REM this command file will add a network printer to a computer remotely

REM the parameters are:

REM   1 - the name of the computer to which the network printer is to be added
REM   2 - the UNC name of the printer to be added

REM for example, to add the printer called ThePrinter that is shared from the computer PrintServer
REM    to the computer called TheClient:

REM  key this command in a Command Prompt window:

REM     addglobalprinterremotely theclient printserver\theprinter

REM add the specified printer to the specified computer
@Echo On
rundll32 printui.dll,PrintUIEntry /ga /c\\%1 /n\\%2
@Echo off
REM stop the print spooler on the specified computer and wait until the sc command finishes
@Echo On
start /wait sc \\%1 stop spooler
@Echo off
REM start the print spooler on the specified computer and wait until the sc command finishes
@Echo On
start /wait sc \\%1 start spooler

Então, no Prompt de comando [2]:

AddGlobalPrinterRemotely targetcomputername printservername\printersharename

Por exemplo, para instalar a impressora \\pserver\p1 na estação abc [2]:

AddGlobalPrinterRemotely abc pserver\p1

Para consultar os parâmetros do comando rundll32 printui.dll,PrintUIEntry, digite no prompt (case sensitive) [2]:

rundll32 printui.dll,PrintUIEntry /?

Alguns detalhes [2]:

  • /c especifica o computador alvo da ação requisitada. Se /c não for especificado, assume-se o computador local. Em outras palavras, a opção /c permite você gerenciar impressoras em outros computadores sem estar presente fisicamente lá (ex. remotamente).
  • /n especifica a impressora de rede, neste caso, adicionada usando um nome de impressora UNC. O UNC (Universal Naming Convention) é “Uma convenção de nomeação de arquivos e outros recursos iniciando com duas barras invertidas (\), indicando que o recurso existe em um computador de rede”. Um nome UNC é uma série de nomes separados por “\”, onde cada nome localiza-se a um nível inferior na hierarquia. Impressoras normalmente ficam localizadas a dois níveis da hierarquia; o nome do computador (servidor de impressão) e o nome do compartilhamento da impressora, ex. \\servername\printersharename. Se o nome do compartilhamento possuir mais de 12 caracteres ou espaços, o compartilhamento não será visível para computadores executando Windows 95, 98 ou ME. [1]
  • /? é compreendida pela função PrintUIEntry para exibir informação de Ajuda em uma janela separada.
  • O comando start /wait executa o comando (ex. sc), então aguarda o comando terminar. Parar e iniciar o Spooler de impressão leva um tempo, e sem o start /wait, o próximo comando (ex. sc ... start spooler) será executado antes que o Spooler de impressão seja interrompido.

A documentação completa da função PrintUIEntry da biblioteca printui.dll pode ser encontrada na Documentação oficial da Microsoft (em inglês) [4].

Referências

  1. Glossary. Bruce Sanderson’s Windows Web.
  2. Adding a network printer for all Users. Bruce Sanderson’s Windows Web.
  3. Printing FAQ. Bruce Sanderson’s Windows Web.
  4. rundll32 printui.dll,printUIEntry. Microsoft Docs.
Anúncios

Um comentário em “Como instalar uma impressora de rede para todos os usuários do Windows

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

w

Conectando a %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.