Bezug nehmend auf das Beispiel und Informationen von Microsoft https://msdn.microsoft.com/en-us/library/system.io.driveinfo.getdrives(v=vs.110).aspx, fand ich den folgenden Code, um den Laufwerksbuchstaben und den Typ aller Laufwerke einschließlich der derzeit nicht verbundenen aber zugewiesenen Laufwerke zu erzeugen.
using System;
using System.IO;
namespace DriveInfoExample
{
class Program
{
static void Main(string[] args)
{
DriveInfo[] drives = DriveInfo.GetDrives();
foreach (DriveInfo d in drives)
{
// The only two properties that can be accessed for all drives
// whether they are online or not (ready)
//
Console.WriteLine(d.Name);
Console.WriteLine(d.DriveType);
}
Console.ReadLine();
}
}
}
gemäß den Anweisungen auf dem oberen Link, wenn Sie versuchen, andere Attribute auf einem Laufwerk das zu bekommen, ist nicht bereit, ein IOException geworfen wird.
Eine Möglichkeit, dies zu handhaben ist drive.IsReady
für wahr mit einer if-Anweisung zu überprüfen, bevor die anderen Eigenschaften erhalten (wie unten gezeigt und fast direkt über den Link oben gerissen):
using System;
using System.IO;
class DriveInfoExample
{
public static void Main()
{
DriveInfo[] drives = DriveInfo.GetDrives();
foreach (DriveInfo d in drives)
{
Console.WriteLine(d.Name);
Console.WriteLine(d.DriveType);
if (d.IsReady == true)
{
Console.WriteLine(d.VolumeLabel);
Console.WriteLine(d.DriveFormat);
Console.WriteLine(d.AvailableFreeSpace);
Console.WriteLine(d.TotalFreeSpace);
Console.WriteLine(d.TotalSize);
}
}
Console.ReadLine();
}
}
Der Schlüssel in Das obige Beispiel ist das if (d.IsReady == true)
, da es nur Attribute für Laufwerke erhält, die als bereit gelten, und Sie werden eine IO-Ausnahme nicht werfen.
Bitte stellen Sie eine Frage per Post. Ich habe die zweite Frage "Wie höre ich USB Connect Event" aus dem Post entfernt (zusammen mit "Danke" Notizen) –
Vielleicht wird das eine Hilfe für Sie sein? http://stackoverflow.com/questions/1088752/how-to-programmatics-discover-mapped-network-drives-on-system-and-their-serve –
Sie meinen, die Verwendung von WMI? Ich denke, das kann funktionieren. Aber WMI-Anrufe sehr langsam :( Eine andere Lösung wäre toll. – raiserle