C#读取U盘序列号

代码从网上搜来,由于运行不成功,经自己修改过。

private  List < string >  _serialNumber  =   new  List < string > ();

///   <summary>
///  调用这个函数将本机所有U盘序列号存储到_serialNumber中
///   </summary>
private   void  matchDriveLetterWithSerial()
{
    
string [] diskArray;
    
string  driveNumber;
    var searcher 
=   new  ManagementObjectSearcher( " SELECT * FROM Win32_LogicalDiskToPartition " );
    
foreach  (ManagementObject dm  in  searcher.Get())
    {
        getValueInQuotes(dm[
" Dependent " ].ToString());
        diskArray 
=  getValueInQuotes(dm[ " Antecedent " ].ToString()).Split( ' , ' );
        driveNumber 
=  diskArray[ 0 ].Remove( 0 6 ).Trim();
        var disks 
=   new  ManagementObjectSearcher( " SELECT * FROM Win32_DiskDrive " );
        
foreach  (ManagementObject disk  in  disks.Get())
        {
            
if  (disk[ " Name " ].ToString()  ==  ( " \\\\.\\PHYSICALDRIVE "   +  driveNumber)  &  disk[ " InterfaceType " ].ToString()  ==   " USB " )
            {
                _serialNumber.Add(parseSerialFromDeviceID(disk[
" PNPDeviceID " ].ToString()));
            }
        }
    }
}
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( " \ "" );
    var posFoundEnd  =  inValue.IndexOf( " \ "" , posFoundStart + 1);
    var parsedValue  =  inValue.Substring(posFoundStart  +   1 , (posFoundEnd  -  posFoundStart)  -   1 );
    
return  parsedValue;
}

转载于:https://www.cnblogs.com/pains/archive/2010/05/31/1748421.html

获取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 双击点确定
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值