USB ストレージ デバイスと書き込み可能な CD/DVD ドライブを検出する方法 (C#)
質問
特定の時点で利用可能な USB ストレージ デバイスや CD/DVD ライターを検出するにはどうすればよいですか (C# .Net2.0 を使用)。
ファイルを物理的に削除するために保存できるデバイスの選択肢をユーザーに提示したいと考えています。ハードドライブではありません。
解決
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...
}
}
DriveInfo クラスのドキュメントは次のとおりです。
http://msdn.microsoft.com/en-us/library/system.io.driveinfo.aspx
他のヒント
これは、コンピュータに接続されているリムーバブル ドライブまたは CDRom ドライブを確認するための VB.NET コードです。
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
このコードを C# と同等のものに変更することはそれほど難しくありません。 ドライブタイプが利用可能です。
MSDN より:
- 未知: ドライブの種類は不明です。
- ルートディレクトリなし: ドライブにはルート ディレクトリがありません。
- 取り外し可能: ドライブは、フロッピー ディスク ドライブや USB フラッシュ ドライブなどのリムーバブル ストレージ デバイスです。
- 修理済み: ドライブは固定ディスクです。
- 通信網: ドライブはネットワークドライブです。
- のCD-ROM: ドライブは、CD や DVD-ROM などの光ディスク デバイスです。
- ラム: ドライブはRAMディスクです。
C# では、System.IO.DriveInfo クラスを使用して同じものを取得できます
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);
}
}
これは VB.NET の完全なモジュールです。
System.IO をインポートします
モジュールGetDriveNamesByType
Function GetDriveNames(Optional ByVal DType As DriveType = DriveType.Removable) As ListBox
My.Computer.FileSystem.Drives の System.IO.DriveInfo として各 DN に
DN.DriveType = DType の場合
GetDriveNames.Items.Add(DN.Name)
終了の場合
次
終了機能
エンドモジュール
'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>
所属していません StackOverflow