2009-11-27 11 views
5

Jeśli spróbuję zapisać plik na dysku sieciowym, który jest odłączony, pojawia się błąd.Ponowne podłączanie rozłączonego dysku sieciowego

Po dwukrotnym kliknięciu napędu w eksploratorze napęd sieciowy zostanie ponownie podłączony.

Korzystanie z System.Io.Driveinfo.IsReady Mogę sprawdzić, czy napęd jest gotowy - ale jak mogę go ponownie połączyć w kodzie?

Odpowiedz

5

Czy to code, który pokazuje, jak zmapować dysk i usunąć go dynamicznie w czasie wykonywania? To jest na CodeGuru.

+1

Należy pamiętać, że ten kod już nie działa, począwszy od systemu Windows Vista. – AndresRohrAtlasInformatik

0

Jak zauważyła firma @AndresRohrAtlasInformatik, przyjęte rozwiązanie nie działa z systemem Windows Vista i nowszymi.

Więc moim rozwiązaniem jest "po prostu" uruchomić eksploratora jako ukryte okno, przejdź do dysku sieciowego i zamknij eksploratora. Ta ostatnia jest nieco trudniejsza (patrz here), ponieważ eksplorator ma bardzo szczególne zachowanie dla wielu okien.

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(); 
    } 
} 
Powiązane problemy