C# 获取移动硬盘和U盘信息

获取移动硬盘和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);
                }
            }
        }
     }
  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
获取U盘ID序列号 VS2005编译通过,源码源自CSDN。已经测试好用。 可以获得U盘名称,制造商ID号 版本号 U盘序列号及容量 Form1.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; using System.Management; namespace UDiskTest { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button2_Click(object sender, EventArgs e) { DriveInfo[] s = DriveInfo.GetDrives(); foreach (DriveInfo drive in s) { if (drive.DriveType == DriveType.Removable) { pf.Text = drive.Name.ToString(); break; } } ManagementClass cimobject = new ManagementClass("Win32_DiskDrive"); ManagementObjectCollection moc = cimobject.GetInstances(); foreach (ManagementObject mo in moc) { if (mo.Properties["InterfaceType"].Value.ToString() == "USB") { try { //产品名称 Caption.Text = mo.Properties["Caption"].Value.ToString(); //总容量 Size.Text = mo.Properties["Size"].Value.ToString(); string[] info = mo.Properties["PNPDeviceID"].Value.ToString().Split('&'); string[] xx = info[3].Split('\\'); //序列号 MessageBox.Show("U盘序列号:" + xx[1]); PNPDeviceID.Text = xx[1]; xx = xx[0].Split('_'); //版本号 REV.Text = xx[1]; //制造商ID xx = info[1].Split('_'); VID.Text = xx[1]; } catch (Exception ex) { MessageBox.Show(ex.Message); } } } } } } 如果编译遇到问题是using System.Management;无法找到引用找到, 项目(p)->添加引用(R)->找到.NET标签页 列表中下部位找到System.Management 双击点确定

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值