Pergunta

Alguns anos atrás, um outro conjunto programador inteligente de um serviço de VB.NET para imprimir em uma das impressoras instaladas do servidor. O trabalho consultada uma tabela de banco de dados para ver se ele tinha quaisquer pedidos de impressão, que especificam o arquivo a ser impresso e o nome da impressora para enviá-lo para. O trabalho constrói uma linha de comando 3-parte encantamento e executa-lo; ele vai um pouco algo como isto:

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 pediram para fazer outras alterações não relacionadas a este trabalho, e felizmente cumprido. Apenas qualquer versão do trabalho que implantar e executar simplesmente não será impresso. A primeira declaração falha com "Erro de sistema 67 ocorreu. O nome da rede não pode ser encontrado."

O trabalho tem consultado o registro para encontrar o nome da porta para a impressora especificada pelo usuário. A porta ele tenta é realmente a porta "nome" que vemos quando olhamos para as propriedades da impressora. Então, isso é, uh, correta.

exceto ... espere um minuto, o que diabos é um "nome da porta"? Não é um endereço IP válido (embora seja o endereço IP da impressora em si, com o prefixo "IP_". Nada que eu possa encontrar na NET USE nunca diz nada sobre uma porta de impressora, apenas de um computador / share [eo volume opcional].

Alguém pode lançar alguma luz sobre se este poderia ter alguma vez trabalhou?

[Claro, ninguém pode nos fornecer a fonte para a versão do serviço que realmente ainda funciona. Nós não tocamos essa parte do serviço, apenas o que precede esta impressão. E o cliente jura que eles não têm qualquer um. Grrr ...]

Nós estamos olhando para uma forma mais moderna de impressão, embora o fato de que ele precisa para funcionar como um serviço complica as coisas.

Foi útil?

Solução

O parâmetro "IP_1.2.3.4" é o nome do compartilhamento da impressora, não um nome de porta. Você deve ter partilhado uma das impressoras instaladas existentes, dando-lhe o nome de "IP_1.2.3.4" em algum momento no passado, e este nome de compartilhamento está faltando.

Se você só precisa de uma impressora passthrough, você pode instalar o "Generic / Text Only" impressora, atribuí-lo para a porta desejada, e compartilhá-lo usando o nome em seu comando "net use".

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top