获取移动硬盘和U盘信息
1.首先引入名称空间 System.Management
2.示例代码如下
using System;
using System.Management;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
getExternalDisk();
Console.ReadKey();
}
public static void getExternalDisk() {
ManagementClass mgtCls = new ManagementClass("Win32_DiskDrive");
var disks = mgtCls.GetInstances();
foreach (ManagementObject mo in disks)
{
if (mo.Properties["MediaType"].Value != null &&
!(mo.Properties["MediaType"].Value.ToString() == "Fixed hard disk media"))
{
foreach (ManagementObject diskPartition in mo.GetRelated("Win32_DiskPartition"))
{
foreach (ManagementBaseObject disk in diskPartition.GetRelated("Win32_LogicalDisk"))
{
Console.WriteLine(disk.Properties["Name"].Value.ToString() + "\\");
Console.WriteLine("产品名称:" + mo.Properties["Caption"].Value.ToString());
Console.WriteLine("总容量:" + mo.Properties["Size"].Value.ToString());
Console.WriteLine(mo.Properties["PNPDeviceID"].Value.ToString());
}
}
}
}
}
}
}
打印输出:
原理:
本地的C盘和D盘的MediaType属性值为Fixed hard disk media 固定硬盘介质
而像移动硬盘MediaType属性值为External hard disk media 外置硬盘介质
U盘则区别更大MediaType属性值为Removable Media 可移动介质
如果只想知道插入U盘的路径只需要使用如下方法:
原理很简单因为U盘的设备类型是Removable,但是这种方法无法区分可移动硬盘和本地硬盘
using System;
using System.IO;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
getUSBPath();
Console.ReadKey();
}
public static void getUSBPath() {
DriveInfo[] drives = DriveInfo.GetDrives();
foreach (DriveInfo drive in drives)
{
if (drive.DriveType == DriveType.Removable)
{
Console.WriteLine(drive.Name);
}
}
}
}