2011-05-12 2 views
3

관리자 권한이없는 사용자가 프로그램을 실행중인 컴퓨터의 모든 로컬 프린터를 어떻게 찾을 수 있습니까? 프린터 IP를 다시 매핑하고 프린터를 기본값으로 설정해야합니다. 내 생각은 가장을 사용하여이 작업을 수행하지만 프린터를 찾을 위치와 가장을 사용하는 좋은 해결책인지는 알 수 없습니다.프린터 IP 및 기본 프린터를 변경하는 로컬 프린터 목록 가져 오기

도움 주셔서 감사합니다.

+0

가 운영 체제에 대한 자세한 정보를 제공 할 수 있습니까? – sra

+0

나는 창문 7만을 사용합니다. – Tim

답변

2

나는 당신이 이걸 가지고 행운이 없을 것이라고 생각하지 않습니다. 가장은 여기서 작동하지 않고 그냥 예외를 throw합니다. 가장을 만들어 Environment.Domain을 열려고하면 예외가 발생합니다.

당신은 가장하지 않고 이런 식으로 뭔가를 시도 할 수 있습니다 :

ManagementScope mscope = new ManagementScope(@"\root\CIMV2", options); 
mscope.Connect(); 
System.Management.ObjectQuery oQuery = new ObjectQuery("Select * from Win32_TCPIPPrinterPort"); 
System.Management.ManagementObjectSearcher searcher = new ManagementObjectSearcher(mscope, oQuery); 
ManagementObjectCollection moCollection = searcher.Get(); 

foreach (ManagementObject mo in moCollection) 
{ 
    string name = mo["Name"].ToString(); 

    if (name.Equals(this.portName)) 
    { 
     System.Threading.Thread.Sleep(10000); 
     mo["HostAddress"] = this.printerIP; 
     mo.Put(); 
     Console.WriteLine("Adjusted Printer Port to new IP address " + this.printerIP); 
     return true; 
    } 
} 
+0

감사합니다. 그게 나를 위해 작동하는 것 – Tim

+0

좋은. 이 대답을 확인하는 것보다 중요합니까? – sra

+0

죄송합니다. 새로운 소식이며 알지 못했습니다. – Tim