So erkennen Sie USB-Speichergeräte und beschreibbare CD/DVD-Laufwerke (C#)
Frage
Wie kann ich alle zu einem bestimmten Zeitpunkt verfügbaren USB-Speichergeräte und/oder CD-/DVD-Brenner ermitteln (mit C# .Net2.0)?
Ich möchte Benutzern eine Auswahl an Geräten präsentieren, auf denen eine Datei zum physischen Entfernen gespeichert werden kann – d. h.nicht die Festplatte.
Lösung
using System.IO;
DriveInfo[] allDrives = DriveInfo.GetDrives();
foreach (DriveInfo d in allDrives)
{
if (d.IsReady && d.DriveType == DriveType.Removable)
{
// This is the drive you want...
}
}
Die Dokumentation der DriveInfo-Klasse finden Sie hier:
http://msdn.microsoft.com/en-us/library/system.io.driveinfo.aspx
Andere Tipps
Dies ist der VB.NET-Code zum Überprüfen, ob an den Computer angeschlossene Wechseldatenträger oder CD-ROM-Laufwerke vorhanden sind:
Me.lstDrives.Items.Clear()
For Each item As DriveInfo In My.Computer.FileSystem.Drives
If item.DriveType = DriveType.Removable Or item.DriveType = DriveType.CDRom Then
Me.lstDrives.Items.Add(item.Name)
End If
Next
Es wird nicht so schwer sein, diesen Code in ein C#-Äquivalent zu ändern, und noch mehr Laufwerkstypsind verfügbar.
Von MSDN:
- Unbekannt: Der Antriebstyp ist unbekannt.
- NoRootDirectory: Das Laufwerk verfügt über kein Stammverzeichnis.
- Abnehmbar: Das Laufwerk ist ein Wechselspeichergerät, beispielsweise ein Diskettenlaufwerk oder ein USB-Flash-Laufwerk.
- Fest: Das Laufwerk ist eine Festplatte.
- Netzwerk: Das Laufwerk ist ein Netzlaufwerk.
- CD-ROM: Das Laufwerk ist ein optisches Datenträgergerät, beispielsweise eine CD oder DVD-ROM.
- RAM: Das Laufwerk ist eine RAM-Disk.
In c# können Sie dasselbe erreichen, indem Sie die Klasse System.IO.DriveInfo verwenden
using System.IO;
public static class GetDrives
{
public static IEnumerable<DriveInfo> GetCDDVDAndRemovableDevices()
{
return DriveInfo.GetDrives().
Where(d => d.DriveType == DriveType.Removable
&& d.DriveType == DriveType.CDRom);
}
}
Dies ist ein vollständiges Modul für VB.NET:
Importiert System.IO
Modul GetDriveNamesByType
Funktion GetDriveNames(Optional ByVal DType As DriveType = DriveType.Removable) Als ListBox
Für jeden DN als System.IO.DriveInfo in My.Computer.FileSystem.Drives
Wenn DN.DriveType = DType, dann
GetDriveNames.Items.Add(DN.Name)
Ende wenn
Nächste
Funktion beenden
Endmodul
'Drive Types <br>
'Unknown: The type of drive is unknown. <br>
'NoRootDirectory: The drive does not have a root directory. <br>
'Removable: The drive is a removable storage device, such as a floppy disk drive or a USB flash drive. <br>
'Fixed: The drive is a fixed disk. <br>
'Network: The drive is a network drive. <br>
'CDRom: The drive is an optical disc device, such as a CD or DVD-ROM. <br>
'Ram: The drive is a RAM disk. <br>