Pregunta

Hace algunos años, otro programador listo estableció un servicio de VB.NET para imprimir en una de las impresoras instaladas en el servidor. El trabajo de consulta una tabla de base de datos para ver si tenía alguna petición de impresión, que especifican el archivo a imprimir y el nombre de la impresora para enviar el mensaje. El trabajo construye un encantamiento línea de comandos 3-parte y lo ejecuta; que va un poco algo como esto:

net use LPT2: IP_1.2.3.4 /user:domain\userid password >> netuse1.out
copy someExistingFile.pdf LPT2 >> copy.out
net use LPT2: /delete >> netuse2.out

Nos han pedido hacer otros cambios ajenos a este trabajo, y felizmente cumplimos. Sólo cualquier versión del trabajo que desplegar y ejecutar simplemente no va a imprimir. La primera sentencia falla con "Error de sistema 67 ha ocurrido. El nombre de la red no puede ser encontrado."

El trabajo ha consultado el registro para encontrar el nombre del puerto de la impresora especificada por el usuario. El puerto se trata es de hecho el "nombre" Puerto vemos cuando se mira en las propiedades de la impresora. Así que eso es, uh, correcta.

A excepción ... espera un minuto, ¿qué diablos es un "nombre de puerto"? No es una dirección IP válida (aunque es la dirección IP de la impresora misma, con el prefijo "IP_". No hay nada que puedo encontrar en NET USE nunca dice nada acerca de un puerto de impresora, solamente un ordenador / acción [y el volumen opcional].

¿Alguien puede arrojar alguna luz sobre si esto podría haber trabajado nunca?

[Por supuesto, nadie puede proporcionarnos la fuente de la versión del servicio que en realidad todavía funciona. Nosotros no hemos tocado esta porción del servicio, sólo lo que precede a esta publicación. Y el cliente jura que no tienen tampoco. Grrr ...]

Estamos ante una forma más moderna de la impresión, aunque el hecho de que necesita para funcionar como un servicio complica las cosas.

¿Fue útil?

Solución

El parámetro "IP_1.2.3.4" es el nombre de impresora compartida, no un nombre de puerto. Debes haber compartido una de las impresoras instaladas existentes lo que le da el nombre de "IP_1.2.3.4" en algún momento en el pasado, y este nombre de recurso compartido no se encuentra.

Si sólo necesita una impresora de paso a través, se puede instalar el "genérico / sólo texto" de la impresora, asignarla al puerto deseado, y compartirlo con el nombre en el comando "net use".

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top