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;
            }
  • 相关阅读:
    Android开发经验一判断当前屏幕是全屏还是非全屏
    Android得到控件在屏幕中的坐标
    MyBatis简单的增删改查以及简单的分页查询实现
    Coreseek:第二步建索引及測试
    极静之渊
    统计电影票房排名前10的电影并存入还有一个文件
    AAA
    FreeLink开源呼叫中心设计思想
    树后台数据存储(採用webmethod)
    [乐意黎原创] 百度统计这个坑爹货
  • 原文地址:https://www.cnblogs.com/zhangliangzlee/p/2921709.html
Copyright © 2011-2022 走看看