システム内の固定ディスクのリストを取得したい。ただし、C#のGetDrives固定ドライブにはプラグUSBハードディスクが含まれています。
固定ドライブがUSBハードディスクではないこと、またはその逆であることをどのように検出できるか考えてみてください。
システム内の固定ディスクのリストを取得したい。ただし、C#のGetDrives固定ドライブにはプラグUSBハードディスクが含まれています。
固定ドライブがUSBハードディスクではないこと、またはその逆であることをどのように検出できるか考えてみてください。
USBのシリアル番号を取得する方法からニックネームが付けられた解決策-C#でスティック:
//import the System.Management namespace at the top in your "using" statement.
ManagementObjectSearch theSearcher = new ManagementObjectSearcher(
"SELECT * FROM Win32_DiskDrive WHERE InterfaceType='USB'");
DriveType を使用して、ドライブのタイプを検出します。
using System.IO;
DriveInfo[] allDrives = DriveInfo.GetDrives();
foreach (DriveInfo d in allDrives)
{
if (d.IsReady && d.DriveType == DriveType.Fixed)
{
// This is the drive you want...
}
}
EDIT1:
次のリンクを確認してください: ハード ドライブが USB 経由で接続されているかどうかを検出するにはどうすればよいですか?
ここでは、USB ハードディスクのリストを取得できます。
//Add Reference System.Management and use namespace at the top of the code.
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive WHERE InterfaceType='USB'");
foreach (ManagementObject queryObj in searcher.Get())
{
foreach (ManagementObject b in queryObj.GetRelated("Win32_DiskPartition"))
{
foreach (ManagementBaseObject c in b.GetRelated("Win32_LogicalDisk"))
{
Console.WriteLine(String.Format("{0}" + "\\", c["Name"].ToString())); // here it will print USB drive letter
}
}
}
ここでは、すべての固定ドライブ (システムおよび USB ハードディスク) のリストを取得できます。
DriveInfo[] allDrives = DriveInfo.GetDrives();
foreach (DriveInfo d in allDrives)
{
if (d.IsReady == true && d.DriveType == DriveType.Fixed)
{
Console.WriteLine("Drive {0}", d.Name);
Console.WriteLine(" Drive type: {0}", d.DriveType);
}
}
それらを比較すると、システム内の固定ディスクのリストを取得できますが、USB ハードディスクはありません。
個々の解決策 (ドライブ文字の検索を含む) については、この MSDN リンクを使用してください: WMI タスク: ディスクとファイル システム