So erkennen Sie USB-Speichergeräte und beschreibbare CD/DVD-Laufwerke (C#)

StackOverflow https://stackoverflow.com/questions/51645

  •  09-06-2019
  •  | 
  •  

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.

War es hilfreich?

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>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top