2012-03-20 22 views
5

यह अच्छी तरह से हो सकता है कि मुझे इसके लिए अत्यधिक जटिल लिखना है और यह करने के लिए कोई नियमित तरीका नहीं है, लेकिन:मैं सी # में प्रिंटर विज़ार्ड जैसे सभी उपलब्ध प्रिंटर ड्राइवरों को कैसे सूचीबद्ध कर सकता हूं?

मैं खुद को सभी प्रिंटर ड्राइवरों की सूची कैसे जोड़ सकता हूं जैसे कि प्रिंटर जादूगर तब करता है जब यह निर्माता द्वारा प्रिंटर द्वारा प्रदर्शित करता है? मैं मूल रूप से एक कस्टम प्रिंटर संवाद जोड़ सकते हैं और इस के बिना की जरूरत है, मैं थोड़ा भरवां कर रहा हूँ;)

इस तरह

: (तीर की अनदेखी, उधार ली गई छवि)

enter image description here

मैं भी पथ की आवश्यकता होगी .inf ड्राइवरों सूची में निर्दिष्ट फ़ाइल के लिए

संपादित करें: एक छोटी सी पृष्ठभूमि:

मैं एक टी एस सत्र में ऐड प्रिंटर विज़ार्ड (ऊंचा privs के साथ) लागू द्वारा एक प्रिंटर जोड़ने का प्रयास कर रहा हूँ, जोड़ने प्राइ सही टीएस पोर्ट पर नज़र डालें और फिर उस प्रिंटर के लिए जानकारी को सहेजने का प्रयास करें ताकि लॉगिन पर उपयोगकर्ता प्रिंटर को मेरे द्वारा सहेजे गए मानों के आधार पर स्वचालित रूप से जोड़ा जा सके।

अभी तक, मैं ड्राइवर जानकारी प्राप्त करने के लिए कोई रास्ता नहीं ढूंढ पाया (अधिमानतः उस प्रिंटर ड्राइवर के लिए .inf फ़ाइल का वास्तविक पथ तब तक मैं प्रिंटर स्थापित करने के लिए प्रिंटयूआई का उपयोग कर सकता हूं) मुद्रक।

इस तरह, मैं प्रिंटर ड्राइवर से मेल खाने के लिए एक कस्टम संवाद का सहारा ले रहा हूं। चूंकि टूल का उपयोग केवल प्रारंभिक प्रिंटर इंस्टॉल पर किया जाता है और केवल प्रशासकों द्वारा मुझे कोई द्वितीयक संवाद नहीं होता है जहां आप ड्राइवर को दूसरी बार चुनते हैं, इसलिए मैं जानकारी को सहेज सकता हूं।

संपादित करें: Windows Server 2008 R2 (Win32_PrinterDriver नहीं करता है काम करने के लिए दिखाई देते हैं) का लक्ष्य निर्धारण

+0

'% windir% \ inf' में सभी inf फ़ाइलों को पार्स करने का प्रयास करें। शुभकामनाएँ :-) – rekire

+0

@rekire मैं इंप्रेशन के तहत था कि ड्राइवर% windir% \ System32 \ DriverStore \ FileRepository में स्थित थे? क्या यह गलत है? –

+0

@ डैनियलए। अच्छी तरह से मुझे इसकी आवश्यकता नहीं होगी अगर मैं कहीं और जानकारी प्राप्त कर सकूं, मूल रूप से मैं printui.dll के माध्यम से एक प्रिंटर जोड़ रहा हूं, प्रिंटयूइन्ट्री/आईएल जो विज़ार्ड प्रदर्शित करता है और मुझे उस पर लॉगिन करने की आवश्यकता है - इसलिए मैं ' मैं लॉगिन करने के लिए फिर से जोड़ने के लिए एक प्रिंटर का उपयोग कर रहा ड्राइवर रिकॉर्ड करने का प्रयास कर रहा हूं। –

उत्तर

2

आप इस जानकारी के लिए WMI क्वेरी कर सकते हैं। Win32_PrinterDriver class उपलब्ध संपत्तियों का विवरण देता है। आप प्रश्नों को करने के लिए System.Management Namespace में कक्षाओं का उपयोग कर सकते हैं।

SelectQuery selectQuery = new SelectQuery("Win32_PrinterDriver"); 
ManagementObjectSearcher searcher = new ManagementObjectSearcher(selectQuery); 

foreach (ManagementObject printerDriver in searcher.Get()) 
{ 
    // Your code here. 
} 

आप गुण अनुक्रमण द्वारा उन्हें, अर्थात् पहुँच सकते हैं।

एमएसडीएन पर WMI Queries विषय भी देखें।

+1

पर छोड़ दिया, ऐसा लगता है कि मुझे प्रिंटर की एक बहुत छोटी राशि मिलती है, हालांकि - यह संभवतः प्राप्त करने के लिए पर्याप्त हो सकता है जैसा कि मैं चाहता हूं स्थापित प्रिंटर द्वारा उपयोग किए जाने वाले ड्राइवरों की सूची, और उस समय मैं इसका उपयोग करने जा रहा हूं, यह काम करेगा। –

संबंधित मुद्दे