2014-10-29 2 views
1

(Google에서이 날을 검색했습니다. 영업 비밀이 있습니까?)로컬 프린터 드라이버가 네트워크 프린터를 찾는 방법은 무엇입니까?

프린터가 자체 설치되어있는 노트북 (Canon MF4500w 시리즈)이 있습니다. 노트북은 공기를 통해 프린터와 통신합니다. 프린터 자체가 라우터에 직접 연결되어 있으며 프린터에 고정 IP 주소가 사용되지 않습니다. 라우터는 IP 주소를 프린터에 할당합니다. 내 노트북에서

는, 제어 \ 인쇄 \ 모니터 \ CURRENTCONTROLSET \

HKEY_LOCAL_MACHINE을 \ 시스템에서 프린터에 대한 레지스트리 항목 \ 표준 TCP/IP 포트 \ 포트 그러나

자신 없다, 포트가있다 캐논 MFNP 포트에 대한 항목 :

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\Canon MFNP Port\Ports 

of CNMFNP_001E8FB0726C 

이 레지스트리 항목을 보여줍니다

IPFixed  REG_DWORD 0x000000000 (0) 
PrinterPort REG-DWORD 0x0000238c (9100) 
Protocol  REG_DWORD 0x00000001 (1) 
TargetAddress REG_DWORD 0x390b000a (957022218) 
TargetMAC  REG_SZ  00-1E-8F-B0-72-6C 
TargetPort  REG_DWORD 0x0000021a2 (8610) 

내 생각 엔 프린터 드라이버 자체가 레지스트리의 정보로 네트워크 프린터를 검색 할 수있는 기능을 갖추고 있다고 생각합니다.

이 기능을 수행하고이 레지스트리 항목에 주어진 프린터의 현재 IP 주소를 반환 할 수있는 Windows 기능 (이상 C#)이 있습니까?

모든 도움을 주시면 대단히 감사하겠습니다. 감사.

+0

나는 보편적 인 해결책이있을 것 같지 않다. Windows가 프린터의 IP 주소가 무엇인지 상관하지 않을 이유는 분명합니다. 각 유형의 인쇄 모니터를 별도로 처리해야합니다. 이 경우 MAC을 얻었으므로 역방향 조회를 수행 할 수있는 방법이 있습니까? –

+0

@HarryJohnston Windows 프린터 -> 포트 -> 포트 구성으로갑니다. Windows는 10.0.11.57의 IP 주소를보고합니다. 코드로 복제 할 수 있습니까? –

+0

타사 인쇄 모니터에 의해 표시되고 있다고 생각합니다. 그러나 나는 틀렸을 것입니다, 잘하면 전문가가 여기에서 도울 수 있습니다. –

답변

0

초보자로서이 답변을 향상시킬 수있는 사람이 많다는 것을 알고있는 사람에게 내 조사 결과를 게시하고 싶습니다. (나는 이것이 SO의 정신에 있기를 희망한다).

질문에 대한 간단한 대답은 다음과 같습니다. 프린터 드라이버 만 대상 장치에 도달하는 방법을 알고 있습니다.

긴 대답 :

  1. 인쇄는 Windows 운영 체제의 가장 약한 대부분의 비 표준화 된 부품 중 하나 여야합니다.
  2. win32_managment 시스템은 Windows 레지스트리의 표준화 된 항목을 기반으로하며 타사 프린터 응용 프로그램에서는 발생하지 않습니다. 따라서 win32_ 관리 시스템은 타사 프린터가 어떻게 설치되었는지를 이미 알고있는 경우에만 사용할 수 있습니다.
  3. 타사 프린터가 어떻게 설치되었는지 알고 나면 레지스트리에 대한 특정 판독기를 사용하여 타사 프린터에서 사용되는 정보를 쉽게 찾을 수 있습니다. 그러나이 정보가 있더라도 궁극적으로이 정보로 무엇을 할 것인지에 대한 구체적인 지식을 가진 프린터 드라이버이므로 시각 장애인 토끼 구멍이 될 수 있습니다.
  4. 내가 알 수있는 한, PCL로 더 일반적으로 언급되는 프린터 명령 언어를 제외한 프린터 드라이버 간에는 표준화가 없습니다.
  5. Windows의 PCL이 API 중 하나에 임베드되어 있지만 .NET 시스템을 통해 쉽게 사용할 수없는 것 같습니다. 또한 명령에 필요한 특정 구문을 알고 있어야하며, 아직 알지 못하는 정보도 필요합니다. 이것에 대한 간단한 설문 조사는 또 다른 토끼 구멍 인 프린터의 IP 주소를 알아야한다는 것을 보여줍니다.
  6. 아마도 프린터의 MAC 주소를 제외하면 시스템에 상수가 분명히 없습니다. 6.1. "IP 주소"창은 실제 IP 주소의 별칭 일뿐입니다.그 이유는 프린터가 라우터의 전원을 켜면 IP 주소를 동적으로 재사용 할 수 있기 때문입니다. 그래서 소프트웨어는 새로운 IP 주소를 "따라갈"수 있고 그 IPAddress를 포트 설명에 대해 일정한 별칭 IP 주소에 할당 할 수 있습니다. 6.2 프린터 대기열 (Windows 프린터 및 장치에 표시된 것)은 사용자가 임의로 이름을 바꿀 수 있습니다. 상수가 아닙니다. 6.3 "포트 이름"은 사용자가 임의로 변경할 수 있습니다. 6.4 주어진 프린터 드라이버는 다른 장치에 대해 여러 번 사용할 수 있습니다. 여기에 일대 다 관계가 있습니다. 분명히 장치 드라이버는 장치를 설치할 때 설정된 레지스트리 위치와 항목을 이해해야합니다. (다시 말하면 제 3 자 정보) 6.5 장치의 MAC조차도 라우터 수준에서 스푸핑 될 수 있습니다. 따라서 심지어 상수도 아닙니다.
  7. 궁극적으로 모든 것이 임의로 설정 될 수 있으며 써드 파티 프린터 드라이버 만이 레지스트리 정보를 어디에서 어떻게 사용하는지 이해할 수 있습니다. 내가 생각할 수있는 가장 간단한 해결책은 다음과 같습니다. 7.1 프린터 대기열에 태그 달기 및 장치)를 대상 장치의 MAC과 비교합니다. 7.2 대상 장치의 MAC을 변경하지 마십시오. 7.3 arp -a (또는 일부 변형)를 사용하여 런타임에 장치의 실제 IP 주소를 가져옵니다. 이렇게하면 장치에 IP 주소의 실제 매핑이 제공됩니다.

전문가가이 대답을 해결하기를 바랍니다. 감사.

+0

5 : PCL은 사실 프린터가 아닌 사실상의 표준입니다. Postscript를 대신 사용하는 프린터가 있으며 몇 년 전에 다른 많은 대안이있었습니다. 많은 프린터는 표준을 사용하지 않았으며 각 브랜드 또는 각 모델마다 고유 한 언어를 사용했습니다. 결론적으로 Windows API는 의도적으로 PCL 또는 다른 특정 프린터 언어를 사용하지 않습니다. –

관련 문제