Переподключение отключенного сетевого диска - PullRequest
5 голосов
/ 27 ноября 2009

Если я пытаюсь записать файл на сетевой диск, который отключен, я получаю сообщение об ошибке.

Если дважды щелкнуть диск в проводнике, сетевой диск снова подключится.

Использование System.Io.Driveinfo.IsReady Я могу проверить, готов ли накопитель - но как я могу подключить его в коде?

Ответы [ 2 ]

5 голосов
/ 27 ноября 2009

Будет ли это код , который показывает, как подключить диск и динамически отключить его во время выполнения?Это на CodeGuru.

0 голосов
/ 30 ноября 2017

Как отметил @AndresRohrAtlasInformatik, принятое решение не работает с Windows Vista и более поздними версиями.

Таким образом, мое решение состоит в том, чтобы «просто» запустить проводник как скрытое окно, перейти к сетевому диску и закрыть проводник. Последнее немного сложнее (см. здесь ), потому что проводник имеет очень особенное поведение для нескольких окон.

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();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...