Domanda

Alcuni anni fa, un altro programmatore intelligente istituito un servizio di VB.NET per stampare su una delle stampanti installate del server. Il lavoro interrogato una tabella di database per vedere se avesse qualche richieste di stampa, che specificano il file da stampare e il nome della stampante per inviare a. Il lavoro costruisce un 3-parte riga di comando incantesimo e lo esegue; va un po 'qualcosa di simile a questo:

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

Ci hanno chiesto di fare altre modifiche non correlate a questo lavoro, e felicemente obbedì. Solo qualsiasi versione del lavoro che distribuire ed eseguire semplicemente non stampa. La prima affermazione ha esito negativo con "Errore di sistema 67. Il nome di rete non può essere trovato".

Il processo ha interrogato il Registro di sistema per trovare il nome della porta per la stampante specificata dall'utente. La porta si cerca è infatti la porta di "nome" che vediamo quando guardando le proprietà della stampante. Ecco, questo è, uh, corretta.

Solo che ... aspetta un attimo, quello che nel diavolo è un "nome di porta"? Non è un indirizzo IP valido (anche se è l'indirizzo IP della stampante stessa, con prefisso "IP_". Nulla posso trovare il NET USE dice mai nulla di una porta stampante, solo un computer / share [e il volume opzionale].

Può chiunque fare luce sul fatto che questo avrebbe potuto mai lavorato?

[Naturalmente, nessuno può fornirci la sorgente per la versione del servizio che funziona in realtà ancora. Noi non abbiamo toccato questa parte del servizio, solo ciò che precede stampa. E il cliente giura che non hanno o. Grrr ...]

Stiamo cercando un modo più moderno di stampa, anche se il fatto che esso deve essere eseguito come un servizio complica le cose.

È stato utile?

Soluzione

Il parametro "IP_1.2.3.4" è il nome di condivisione della stampante, non è un nome di porta. Devi aver condiviso una delle stampanti installate esistenti dandogli il nome "IP_1.2.3.4" ad un certo punto nel passato, e questo nome di condivisione è mancante.

Se avete solo bisogno di una stampante passthrough, è possibile installare il "generico / solo testo" della stampante, assegnarla alla porta desiderata, e condividerlo utilizzando il nome nel comando "net use".

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top