2016-04-16 3 views
2

Ich versuche, ein Programm, das auf alle Laufwerke schaut, versucht, eine entfernbare mit dem Namen "DOM WORK" zu finden und dann die Laufwerksname (wie E :) und druckt das dann. Leider bekomme ich diese Fehlermeldung:Getting 'Das Gerät ist nicht bereit' Fehler bei der Verwendung von DriveInfo.GetDrives()

Unhandled Exception: System.IO.IOException: The device is not ready. 

    at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) 
    at System.IO.__Error.WinIODriveError(String driveName, Int32 errorCode) 
    at System.IO.DriveInfo.get_VolumeLabel() 
    at WorkSync.Program.Main(String[] args) in d:\dominic\documents\visual studio 2015\Projects\WorkSync\WorkSync\Program.cs:line 19 

habe ich versucht, das Programm als ausführbare Aufbau und anschließend mit Administratorrechten ausgeführt wird, die nicht funktioniert hat.

Hier ist mein Code, ich verwende:

using System; 
using System.IO; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace WorkSync 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      DriveInfo[] allDrives = DriveInfo.GetDrives(); 
      string memStickName = ""; 

      foreach(DriveInfo drive in allDrives) 
      { 
       Console.WriteLine(drive.VolumeLabel); 
       if (drive.VolumeLabel == "DOM WORK" && drive.DriveType.ToString() == "removable") 
       { 
        memStickName = drive.Name; 
        break; 
       } 
      } 

      Console.WriteLine(memStickName); 
     } 
    } 
} 

Antwort

4

Sie müssen sicherstellen, dass der Antrieb tatsächlich zugänglich ist, die DriveInfo.IsReady Eigenschaft.

foreach(DriveInfo drive in allDrives) 
{ 
    if (drive.IsReady == true) 
    { 
    // Check volume name here 
    } 
} 
Verwandte Themen