2013-06-06 3 views
2

네트워크의 모든 프린터를 찾으려고 노력하고 있습니다. 그러나 저는 항상 이미 컴퓨터에 연결된 프린터로 끝났습니다. 제어판 \ 하드웨어 및 소리 \ 장치 및 프린터에서 프린터를 추가하려고하면 네트워크에서 더 많은 프린터를 사용할 수 있습니다.로컬 프린터뿐만 아니라 네트워크에서 사용 가능한 모든 프린터를 가져옵니다.

프린터 서버가 없습니다. 모든 프린터는 IP 기반입니다. 난 내 컴퓨터에 설치된 프린터를 얻을 사실에 나는 지역 설정하면 쿼리에서

WqlObjectQuery wQuery = new WqlObjectQuery("SELECT * FROM Win32_Printer Where " + 
    "Local = FALSE"); 
ManagementObjectSearcher res = new ManagementObjectSearcher(wQuery); 
if ((res.Get().Count > 0)) 
{ 
    foreach (ManagementObject printer in res.Get()) 
    { 
     Console.WriteLine(printer["PortName"] + " : " + printer["DriverName"] + 
      " : " + printer["Status"]); 
    } 
} 
else { Console.WriteLine("No printers found"); } 

:

나는 다음과 같은 코드를 사용했다.

나는 또한 여기에서 유사한 질문을 시도했지만 여전히 운이 없다.

도움을 주시면 감사하겠습니다.

+0

안녕하세요, 저는 이것이 해결책이라고 생각합니다. [link] (http://stackoverflow.com/a/40569268/6513653) – ViniCoder

답변

2

WMI에서 네트워크 프린터를 열거 할 수 없으며 로컬 컴퓨터에 등록 된 공유 프린터 만 나열 할 수 있습니다. 이 작업에서는 WNetEnumResource, WNetOpenEnumWNetCloseEnum WinApi 기능을 사용할 수 있습니다. 얼마 전 나는 .Net을 사용하여이 샘플을 작성했습니다. 이 기사를보십시오 Enumerating All Network resources using Delphi Prism, 코드는 Oxygene 언어를 사용하지만 쉽게 C#으로 변환 될 수 있습니다.

+0

고맙습니다. RRUZ. 나는이 일을하기 위해 시간을 할애해야했다. 물론 내 필요에 따라 수정. 마침내 할 수 있었다. –

2

내가 아는 한, 당신이 찾고있는 것은 WMI의 기능 밖에 있습니다.

인쇄 서버가 없지만 모든 프린터가 다른 컴퓨터에 최소한 연결되어 있다면 빠른 해결 방법은 PSExec을 사용하여 네트워크의 모든 컴퓨터에서 로컬로 프린터 찾기 스크립트를 실행하는 것입니다. 어쩌면 로그인 스크립트). 프린터가 네트워크 공유에 대한 스크립트 쓰기를 찾은 다음 실행이 완료되면 정보를 검토하기 만하면됩니다.

그렇지 않으면 ZenMap과 같은 네트워크 매핑 도구 나 Spiceworks (www.spiceworks.com)와 같은 네트워크 모니터링 도구를 사용하여 장치를 지문으로 사용하는 것이 좋습니다.

+0

카일, 답장을 보내 주셔서 감사합니다. 당신이 나를 더 생각하게 만들었 기 때문에 당신을 위해 1까지. –

관련 문제