2012-03-20 15 views
6

मैं अपने कार्यक्रम में एक ड्राइव को मैप करना चाहता हूं। मेरे उपयोगकर्ता एक्सपी से विंडोज़ के हर संस्करण का उपयोग कर सकते हैं। तो मुझे सबसे बहुमुखी विधि की आवश्यकता है। मैंने पहले विधि का उपयोग किया है और आम तौर पर यह मेरे लिए अच्छा काम करता है। लेकिन वास्तव में इसके साथ त्रुटियों को पकड़ने का कोई तरीका नहीं है (जिसे मैं वैसे भी जानता हूं)। दूसरा आसानी से मुझे इसके चारों ओर एक कोशिश/पकड़ ब्लॉक लपेटने देगा, लेकिन विधि 1 के विकल्पों के लिए मैंने जो खोज की है, उसके लिए मैंने केवल एक बार विधि 2 में भाग लिया है। इसलिए यह मुझे आश्चर्यचकित करता है कि क्या यह इस तरह के एक विविध वातावरण के लिए पर्याप्त विश्वसनीय है। क्या कोई मुझे बता सकता है कि अधिकांश परिस्थितियों के लिए विधि 2 सुरक्षित है या नहीं?नक्शा नेटवर्क ड्राइव: "net.exe उपयोग" बनाम WshNetwork.MapNetworkDrive?

विधि 1

Process.Start("net.exe", @"USE Z: \\server\share /user:domain\username password").WaitForExit(); 

विधि 2 संदर्भित विंडोज स्क्रिप्ट होस्ट ऑब्जेक्ट मॉडल

IWshNetwork_Class network = new IWshNetwork_Class(); 
network.MapNetworkDrive("k:", @"\\server\share"); 
+3

मुझे # 2 पसंद है। यह क्लीनर दिखता है, और एक एपीआई के हिस्से के रूप में प्रदान किया गया था। हालांकि, प्रमाण पत्र निर्दिष्ट करने में सक्षम होने के बारे में क्या, आदि? –

+0

हां आप क्रेडेंशियल्स का उपयोग कर सकते हैं। मैंने स्पष्टता के लिए इसे छोड़ दिया। – JimDel

+1

http://pinvoke.net/default.aspx/mpr/WNetAddConnection2.html –

उत्तर

4

अन्य दृष्टिकोण वास्तविक Win32 API (WNetAddConnection2A, WNetCancelConnection2A, आदि) PInvoke होगा। http://www.codeguru.com/csharp/csharp/cs_network/windowsservices/article.php/c12357/

+0

यह सही होगा अगर उसने तृतीय पक्ष निर्मित वर्ग का उपयोग नहीं किया। मुझे उनका उपयोग करने से रोका गया है। – JimDel

+2

आपको अपनी कक्षा का उपयोग करने की आवश्यकता नहीं है। आप अपने काम के आधार पर अपना खुद का निर्माण कर सकते हैं। – dvallejo

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