C#获取U盘序列号的方法

本文实例讲述了C#获取U盘序列号的方法。分享给大家供大家参考。具体如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
using System.Management;
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;
}

调用方法:

?
1
2
3
4
5
6
matchDriveLetterWithSerial();
string [] aa = _serialNumber.ToArray();
for ( int i = 0; i < aa.Length; i++)
{
   aa[i].ToString(); //这里就可以拿出现在所有的U盘序列号
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
获取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、付费专栏及课程。

余额充值