Kjensen
Kjensen

Reputation: 12384

Reconnecting a disconnected network drive

If I try to write a file to a network drive, that is disconnected, I get an error.

If I doubleclick the drive in explorer, the network drive is reconnected.

Using System.Io.Driveinfo.IsReady I can check if a drive is ready - but how can I reconnect it in code?

Upvotes: 6

Views: 8238

Answers (2)

casiosmu
casiosmu

Reputation: 837

As @AndresRohrAtlasInformatik pointed out, the accepted solution doesn't work with Windows Vista and later.

So my solution is to 'simply' start explorer as hidden window, go to the network drive and close explorer. The latter is a bit more difficult (see here) because explorer has very special behaviour for multiple windows.

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();
    }
}

Upvotes: 0

t0mm13b
t0mm13b

Reputation: 34592

Would this code which shows how to map the drive and unmap it dynamically at runtime do? This is on CodeGuru.

Upvotes: 5

Related Questions