Imprimindo na sessão da Área de Trabalho Remota

2

Precisamos conectar um servidor Windows 2008 usando a Área de Trabalho Remota da máquina com Windows XP. Uma impressora de código de barras está conectada com a máquina XP e a impressora é compartilhada como recurso local na sessão RDC para o servidor.

No servidor, temos que imprimir a partir de um aplicativo que imprime na porta LPT ou na impressora compartilhada (caminho UNC). Para isso eu uso para configurar pool de impressão combinando LPT1 e (Terminal Server) porta TSxxx. Como não sei a opção de acessar a impressora da Sessão de Terminal pelo caminho UNC.

Mas tenho os seguintes problemas -

Sempre que me conecto a uma sessão remota, a impressora da minha máquina Win XP local é exibida em Impressoras e aparelhos de fax no Win 2008 Server (Terminal Server), mas não posso gerenciar a impressora Win XP do Terminal Server para ativar o pool. No servidor, tenho que alterar a permissão de segurança sempre e, em seguida, habilitar o pool de impressão. Como posso manter a permissão de segurança inalterada?

Em segundo lugar, criei um arquivo de lote para ativar o pool de impressão.

rundll32 printui.dll,PrintUIEntry /Xs /n "Printer (from CLIENT)" Portname "LPT1:,TS005"

Mas toda vez que a impressora na sessão de terminal se conecta na porta de sessão do terminal diferente. Alguma solução para tornar a porta TS fixa?

A ajuda de qualquer pessoa será muito apreciada.

    
por Arindam Banerjee 11.10.2012 / 18:34

2 respostas

0

Requisito:

  1. Impressão de um host do Terminal Server para a impressora conectada ao TS Client pela conexão de área de trabalho remota.
  2. Crie um arquivo em lotes para cumprir o requisito acima.

Condições:

  • O TS Client conecta o TS Host usando IP estático.
  • No Host TS, a impressão pode ser enviada apenas para a porta LPT. O aplicativo executado lá não pode imprimir em outras impressoras, exceto na impressora compartilhada SMB ou na impressora conectada com a porta LPT.
  • A impressora anexada ao cliente TS não será acessível usando o compartilhamento SMB

Etapas consideradas:

  • Impressora no cliente TS para ser compartilhada como recurso local pela conexão de área de trabalho remota
  • Impressora disponível no Host TS redirecionada do TS Client com acesso restrito para o usuário do RDC atualmente conectado. Portanto, o usuário atual do TS deve ser concedido com a permissão Printer Manage.
  • Habilite o pool de impressoras, como se a impressão fornecida à porta LPT fosse redirecionada para a impressora em outra porta

Referências e ferramentas:

Lote:

REM Begin of the script

REM Find out Session ID of Current RDC User using QUSER
QUSER CurrentTSUsername | FIND "CurrentTSUsername" > TSPrn_tmp.txt
FOR /F "tokens=1-3 delims= " %%i IN ('Type TSPrn_tmp.txt') DO SET TSID=%%k

REM Generate Printer name combining Printer name on Client and Terminal Session ID
SET PRINTER="ClientPrinter (redirected %TSID%)"

REM Grant ownership and Printer Manage Permission to current TS user using SETACL
SETACL -on %PRINTER% -ot prn -actn setowner -ownr n:CurrentTSUsername
SETACL -on %PRINTER% -ot prn -actn ace -ace "n:administrator;p:full"

REM Find out Terminal Session TSxxx port on which the printer mapped using Prncnfg.vbs
cscript %WINDIR%\System32\Printing_Admin_Scripts\en-US\prncnfg.vbs -g -p %PRINTER% | find "Port name" > TSPrn_tmp.txt
FOR /F "tokens=1-3" %%i IN ('TYPE TSPrn_tmp.txt') DO SET TSPORT=%%k

REM Enable Printer pooling combining LPT port and the TS Port
rundll32 printui.dll,PrintUIEntry /Xs /n %PRINTER% Portname "LPT1:,%TSPORT%"

REM Delete the Temp txt file
del TSPrn_tmp.txt

REM end of the script
    
por 26.10.2012 / 12:09
0

Você não pode obter os parâmetros que está solicitando "corrigidos", pois as impressoras são removidas e recriadas em cada sessão desconectada / conectada. Então, obviamente, mudar o aplicativo parece a solução mais limpa. Se não puder ser mudado, você obviamente pode escrever um pouco sobre o problema para aliviar a dor:

Se a sua máquina com Windows XP é acessível através do SMB a partir do servidor de terminal, você obviamente poderia apenas compartilhar a impressora lá e usar a notação \%clientname%\<printer> , mas você provavelmente já pensou nisso e descartou por uma razão ou outra .

    
por 11.10.2012 / 21:19