NET USE para la captura y redirección de impresiones directas a puerto en sistemas Windows

interfaz impresiónA veces, en nuestros sistemas Windows, nos encontramos con la necesidad de imprimir a través del puerto paralelo con una aplicación antigua (normalmente de entorno MS-DOS, que no utiliza el administrador de impresión de Windows), en una impresora local conectada a nuestro ordenador, en una impresora compartida en la red, en una impresora conectada a un administrador de impresión o incluso que esté en una red remota a la que se acceda mediante VPN y/o Terminal Server. Además es más que posible que la impresora no incorpore puerto paralelo LPT sino que tenga un interface COM ó USB.

Resolver este escenario no es fácil, pero es posible cumpliendo unos requisitos y utilizando el comando NET USE.

Hay que tener en cuenta que según la impresora, el sistema operativo y el entorno de cada instalación las condiciones varían. Pueden darse casos en que las instrucciones que en éste documento se detallan no sean suficientes o no funcionen.

1º Escenario.- Impresora local conectada al ordenador en el que está instalada la aplicación.

Supongamos que la aplicación que estamos utilizando solo es capaz de manejar el puerto LPT1.

 Imaginemos que la impresora (no importa su interface) ya está conectada al ordenador con su driver correctamente instalado. Así estamos en condiciones de imprimir en esa impresora a través del administrador de impresión de Windows, pero si intentamos hacer una impresión directa al puerto LPT1 no ocurrirá nada.

A no ser que la impresora lleve interface paralelo y esté conectada al puerto LPT1 del ordenador. Si además es del tipo matricial seguramente consigamos imprimir el documento deseado.

Pero si es una impresora moderna y/o su interface es otro, no lograremos nada. Debemos capturar el puerto LPT1 (que es el que maneja la aplicación) y redirigirlo hacia la impresora deseada.

Supongamos que el PC donde está instalada la aplicación se llama PUESTO_A y que la impresora esté conectada a un puerto USB.

1º.- Debemos compartir la impresora y darle un nombre con un máximo de 8 dígitos. Pongamos por ejemplo IMPRESOR

2º.- En la consola de comandos de Windows (no importa que sea XP, W7 ó server) introduciremos el comando: NET USE LPT1: \PUESTO_AIMPRESOR /PERSISTENT:YES

Lo que hemos hecho es decirle a Windows que todo lo que llegue al puerto LPT1 lo redirija a la impresora compartida IMPRESOR en el ordenador PUESTO_A, independientemente del interface físico del que disponga la impresora.

Con /PERSISTENT:YES conseguimos hacer la redirección definitiva, al reiniciar el ordenador la redirección seguirá activa.

Para ver las redirecciones activas utilizamos: NET USE nos mostrará el detalle

Para eliminar una redirección utilizamos: NET USE puerto: /DELETE

En el comando se puede sustituir \PUESTO_A (nombre Netbios) por su dirección IP \xxx.xxx.xxx.xxx o incluso por \127.0.0.1 (localhost). Según los protocolos de comunicación instalados en el ordenador.

2º Escenario.- Impresora conectada a otro ordenador de la red local, que no es desde el que queremos imprimir.

Supongamos que la aplicación que estamos utilizando solo es capaz de manejar el puerto LPT2

En este caso bastará redirigir el puerto LPT2 contra la impresora compartida en el otro ordenador.

Supongamos que el ordenador en el que estamos trabajando se llama PUESTO_B, que el ordenador que tiene conectada la impresora se llama PUESTO_A y que la impresora compartida se llama IMPRESOR y es USB.

esquema net use

Desde la consola de comandos de PUESTO_B debemos teclear:

NET USE LPT2: \PUESTO_AIMPRESOR /PERSISTENT:YES

Estamos capturando todo lo que se envíe al puerto LPT2 de PUESTO_B y lo estamos enviando a la impresora compartida IMPRESOR (con puerto USB) en el ordenador PUESTO_A

No es necesario que el puerto LPT2 físico exista.

Hay que darse cuenta de que el interface de la impresora física es irrelevante para la captura. Lo importante es capturar el puerto adecuado (con el que trabaja la aplicación) y enviar la impresión al sitio adecuado.

Si nuestra aplicación es capaz de asignar diferentes puertos LPT a cada usuario de la aplicación, podremos utilizar una impresora específica por usuario.

Si no es así, todos los usuarios de la aplicación utilizarán la misma impresora.

También es posible redirigir puertos COM, pero nuestra aplicación debe ser capaz de utilizarlos.

Por supuesto nuestro usuario ha de tener permisos suficientes sobre la impresora y los antivirus y cortafuegos deben estar correctamente configurados.

3º Escenario.- Impresora conectada en un ordenador de una red remota a la que accedemos por VPN.

Es el mismo caso que el anterior, lo que ocurre es que accedemos remotamente a la segunda red mediante una conexión VPN. La conexión entre las dos redes puede realizarse mediante un servicio VPN instalado en el servidor de la segunda red o bien puede ser establecida mediante routers.

esquema vpn

En cualquiera de los casos una vez que tengamos acceso a la segunda red seremos capaces de alcanzar el dispositivo donde esté conectada y compartida la impresora. Por supuesto nuestro usuario ha de tener permisos suficientes para realizar la conexión, sobre el ordenador que comparte la impresora (o el servidor de impresión) y sobre la impresora. Los antivirus y cortafuegos deben estar correctamente configurados.

Según los protocolos instalados en la VPN deberemos capturar el puerto mediante Netbios (nombre del dispositivo del que depende la impresora) o TCP/IP (dirección IP del dispositivo del que depende la impresora).

Desde la consola de comandos de PUESTO_B debemos teclear:

NET USE LPT2: \PUESTO_AIMPRESOR /PERSISTENT:YES

Siendo PUESTO_A el ordenador de la red remota, IMPRESOR la impresora compartida en ese ordenador y PUESTO_B el ordenador de la primera red desde el que queremos imprimir.

4º Escenario.- Impresora conectada al ordenador local desde el que queremos imprimir, estando albergada la aplicación con la que imprimimos en un servidor Windows 20xx Server, en una red remota a la que accedemos por escritorio remoto RDP o Terminal Server.

Es decir, accedemos mediante TS a un servidor remoto. Desde la sesión establecida de TS trabajamos con la aplicación MS-DOS con la que queremos imprimir y la impresora está conectada físicamente al ordenador en el que estoy ejecutando la sesión TS.

Debemos instalar el driver de nuestra impresora tanto en el equipo local como en el servidor. En el equipo local declaramos el puerto físico al que está conectada y la compartimos dándole un nombre un máximo de 8 caracteres.

En el servidor instalamos el driver de la impresora asegurándonos que es la misma versión de driver que el instalado en el puesto. La definimos en un puerto cualquiera y preferiblemente que no exista físicamente.

En el puesto, cuando definamos la conexión remota debemos asegurarnos de marcar la opción de compartir los puertos locales y las impresoras en la opción de Recursos locales.

Si todo va bien, en la sesión creada de TS, veremos en Impresoras y Faxes nuestra impresora capturada y asociada a un puerto TSxxx.

Ya podremos imprimir a través del administrador de impresión de Windows.

Para redirigir el puerto que nos interese (supongamos LPT1), desde el equipo local y la sesión de TS abrimos la consola de comandos y tecleamos:

NET USE LPT1: \SERVIDORIMPRESOR /PERSISTENT:YES

Siendo:

LPT1: el puerto que maneja nuestra aplicación
SERVIDOR el nombre del servidor al que nos conectamos vía TS
IMPRESOR el nombre compartido de la impresora local conectada a nuestro puesto, desde el que trabajamos con nuestra aplicación.

Ignacio Alonso
Dtor. Técnico