2009-11-27 16 views
5

यदि मैं किसी नेटवर्क ड्राइव पर फ़ाइल लिखने का प्रयास करता हूं, तो डिस्कनेक्ट हो जाता है, मुझे एक त्रुटि मिलती है।डिस्कनेक्ट किए गए नेटवर्क ड्राइव को रीकनेक्ट करना

यदि मैं एक्सप्लोरर में ड्राइव को डबलक्लिक करता हूं, तो नेटवर्क ड्राइव को फिर से कनेक्ट किया जाता है।

System.Io.Driveinfo.IsReady का उपयोग करके मैं जांच सकता हूं कि कोई ड्राइव तैयार है या नहीं - लेकिन मैं इसे कोड में कैसे पुनः कनेक्ट कर सकता हूं?

उत्तर

5

क्या यह code होगा जो ड्राइव को मैप करने और रनटाइम पर गतिशील रूप से अनमैप करने के तरीके को दिखाता है? यह कोडगुरु पर है।

+1

ध्यान रखें कि यह कोड अब Windows Vista से शुरू नहीं होता है। – AndresRohrAtlasInformatik

0

@AndresRohrAtlasInformatik के रूप में, स्वीकृत समाधान विंडोज विस्टा और बाद में काम नहीं करता है।

तो मेरा समाधान 'बस' छुपा खिड़की के रूप में एक्सप्लोरर शुरू करना है, नेटवर्क ड्राइव पर जाएं और एक्सप्लोरर बंद करें। उत्तरार्द्ध थोड़ा और कठिन है (here देखें) क्योंकि एक्सप्लोरर के पास कई खिड़कियों के लिए बहुत खास व्यवहार है।

ProcessStartInfo info = new ProcessStartInfo("explorer.exe", myDriveLetter); 
info.WindowStyle = ProcessWindowStyle.Hidden; 
Process process = new Process(); 
process.StartInfo = info; 
process.Start(); 
Thread.Sleep(1000); 
//bool res = process.CloseMainWindow(); // doesn't work for explorer !! 
//process.Close(); 
//process.WaitForExit(5000); 

// https://stackoverflow.com/a/47574704/2925238 
ShellWindows _shellWindows = new SHDocVw.ShellWindows(); 
string processType; 

foreach (InternetExplorer ie in _shellWindows) 
{ 
    //this parses the name of the process 
    processType = System.IO.Path.GetFileNameWithoutExtension(ie.FullName).ToLower(); 

    //this could also be used for IE windows with processType of "iexplore" 
    if (processType.Equals("explorer") && ie.LocationURL.Contains(myDriveLetter)) 
    { 
     ie.Quit(); 
    } 
} 
संबंधित मुद्दे