구식 Windows 2000 인쇄 또는 포트 이름은 언제 컴퓨터입니까?
-
19-09-2019 - |
문제
몇 년 전, 또 다른 영리한 프로그래머는 서버의 설치된 프린터 중 하나에 인쇄 할 VB.NET 서비스를 설정했습니다. 작업은 인쇄 요청이 있는지 확인하기 위해 데이터베이스 테이블을 쿼리하여 인쇄 할 파일을 지정하고 프린터 이름을 보낼 프린터 이름을 지정했습니다. 이 작업은 3 부로 된 명령 줄을 구성하고이를 실행합니다. 그것은 다음과 같이 조금갑니다.
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
우리는이 직업에 대해 다른 관련없는 변경을하도록 요청 받았으며 행복하게 준수했습니다. 배포하고 실행하는 작업의 모든 버전 만 인쇄하지 않습니다. "시스템 오류 67이 발생했습니다. 네트워크 이름을 찾을 수 없습니다."
작업은 레지스트리를 쿼리하여 사용자가 지정한 프린터의 포트 이름을 찾았습니다. 그것이 시도하는 포트는 실제로 프린터의 속성을 볼 때 우리가 볼 수있는 포트 "이름"입니다. 그렇습니다. 맞습니다.
제외하고 ... 잠깐만 요, 도대체 "포트 이름"은 무엇입니까? 유효한 IP 주소는 아닙니다 (프린터 자체의 IP 주소는 "IP_"로 접두사입니다. 프린터 포트, 컴퓨터/공유 [및 선택적 볼륨]에 대해서는 Net Use에서 찾을 수있는 것은 없습니다.
누구든지 이것이 효과가 있었는지에 대한 빛을 발할 수 있습니까?
물론 아무도 실제로 작동하는 서비스 버전의 소스를 우리에게 제공 할 수 없습니다. 우리는이 서비스 의이 부분을 만지지 않았 으며이 인쇄보다 우선합니다. 그리고 고객은 자신도 맹세하지 않습니다. grrr ...
우리는보다 현대적인 인쇄 방법을 찾고 있지만, 서비스가 실행되어야한다는 사실은 사물을 복잡하게 만듭니다.
해결책
"IP_1.2.3.4"매개 변수는 포트 이름이 아닌 프린터 공유 이름입니다. 과거의 어느 시점에서 "IP_1.2.3.4"라는 이름을 제공하는 기존 설치된 프린터 중 하나를 공유해야 했으며이 공유 이름은 누락되었습니다.
패스 스루 프린터 만 있으면 "일반/텍스트 전용"프린터를 설치하고 원하는 포트에 할당 한 다음 "Net Use"명령에서 이름을 사용하여 공유 할 수 있습니다.