zoukankan      html  css  js  c++  java
  • 读取U盘信息的方法

    public class UsbDiskInfo
        {
            public string Display { get; set; }
            public string Value { get; set; }
        }
    
        public class UsbDiskHelper
        {
            //返回结果大致为:AAGP30PMDRVS56NK
            public static IEnumerable<UsbDiskInfo> GetUsbDisksInfo()
            {
                List<UsbDiskInfo> list = new List<UsbDiskInfo>();
                list.Add(new UsbDiskInfo{Display=DropDownListHelper.PLEASE_CHOOSE, Value=null});
                var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_LogicalDiskToPartition");
                foreach (ManagementObject dm in searcher.Get())
                {
                    //dm["Dependent"] 大致为:\\JIANG-PC\root\cimv2:Win32_LogicalDisk.DeviceID="H:"
                    string strDriveLetter = GetValueInQuotes(dm["Dependent"].ToString());
    
                    //dm["Antecedent"] 大致为:\\JIANG-PC\root\cimv2:Win32_DiskPartition.DeviceID="Disk #1, Partition #0"
                    string[] diskArray = GetValueInQuotes(dm["Antecedent"].ToString()).Split(',');
                    string driveNumber = diskArray[0].Remove(0, 6).Trim();
                    var disks = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");
                    foreach (ManagementObject disk in disks.Get())
                    {
                        //disk["Name"] 大致为:\\.\PHYSICALDRIVE1
                        //disk["InterfaceType"] 大致为:USB
                        if (disk["Name"].ToString() == ("\\\\.\\PHYSICALDRIVE" + driveNumber) && disk["InterfaceType"].ToString() == "USB")
                        {
                            //disk["PNPDeviceID"] 大致为:USBSTOR\DISK&VEN_TECLAST&PROD_COOLFLASH(S)&REV_1100\AAGP30PMDRVS56NK&0
                            list.Add(new UsbDiskInfo { Display = strDriveLetter, Value = ParseSerialFromDeviceId(disk["PNPDeviceID"].ToString()) });
                        }
                    }
                }
                return list;
            }
    
            private static string ParseSerialFromDeviceId(string deviceId)
            {
                var splitDeviceId = deviceId.Split('\\');
                var arrayLen = splitDeviceId.Length - 1;
                var serialArray = splitDeviceId[arrayLen].Split('&');
                var serial = serialArray[0];
                return serial;
            }
    
            private static string GetValueInQuotes(string inValue)
            {
                var posFoundStart = inValue.IndexOf("\"", StringComparison.Ordinal);
                var posFoundEnd = inValue.IndexOf("\"", posFoundStart + 1, StringComparison.Ordinal);
                var parsedValue = inValue.Substring(posFoundStart + 1, (posFoundEnd - posFoundStart) - 1);
                return parsedValue;
            }
  • 相关阅读:
    探究 encode 和 decode 的使用问题(Python)
    C语言结构体在内存中的存储情况探究------内存对齐
    文件基本操作 (C语言)
    利用Xamaria构建Android应用-公交发车信息屏
    ChakraCore ,Net托管编程
    Go并发与.Net TAP
    码农视角
    让isis支持高德地图
    Fedora Server 上配置 MariaDb 集群
    .Net Sokcet 异步编程
  • 原文地址:https://www.cnblogs.com/zhangliangzlee/p/2921709.html
Copyright © 2011-2022 走看看