C#得到普通U盘序列号
1、首先打开vs2013(其他版本也可以),在C#项目中选择 Windows窗体应用程序。 写上项目名字点创建。(本例用VS2013系统默认项目名,路径随意。)


2、创建项目后,可以看到一个窗口,将Form1窗口的Text属性改为"C#得到普通U盘序列号";在工具箱中拖一个“Button”按钮和“TexBox”文本框,调整界面如下图。

3、双击“button1”按钮,跳出代码窗口。在button1_Click函数中输入2行代码。
private void button1_Click(object sender, EventArgs e)
{
string str = Get_U盘系列号();
this.textBox1.Text = str;
}
其中Get_U盘系列号()为自定义的获取U盘系列号的函数。

4、点击Get_U盘系列号(),让vs2013系统帮忙新建函数,可省掉书写时间。

5、依次点击“项目“->“添加项目”->“System.Management”->确定


6、完善Get_U盘系列号()方法。
private string Get_U盘系列号()
{
string _driveLetter = Application.StartupPath.Substring(0, 2);//得到盘符
string[] diskArray;
string driveNumber;
string driveLetter;
string _serialNumber="";
ManagementObjectSearcher searcher1 = new ManagementObjectSearcher("SELECT * FROM Win32_LogicalDiskToPartition");
foreach (ManagementObject dm in searcher1.Get())
{
diskArray = null;
string inValue = dm["Dependent"].ToString();
int posFoundStart = 0;
int posFoundEnd = 0;
posFoundStart = inValue.IndexOf("\"");
posFoundEnd = inValue.IndexOf("\"", posFoundStart + 1);
driveLetter = inValue.Substring(posFoundStart + 1, (posFoundEnd - posFoundStart) - 1);
inValue = dm["Antecedent"].ToString();
string driveLetter2 = "";
posFoundStart = 0;
posFoundEnd = 0;
posFoundStart = inValue.IndexOf("\"");
posFoundEnd = inValue.IndexOf("\"", posFoundStart + 1);
driveLetter2 = inValue.Substring(posFoundStart + 1, (posFoundEnd - posFoundStart) - 1);
diskArray = driveLetter2.Split(',');
driveNumber = diskArray[0].Remove(0, 6).Trim();
if (driveLetter == _driveLetter)
{
ManagementObjectSearcher disks = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");
foreach (ManagementObject disk in disks.Get())
{
if (disk["Name"].ToString() == ("\\\\.\\PHYSICALDRIVE" + driveNumber) & disk["InterfaceType"].ToString() == "USB")
{
string[] splitDeviceId = disk["PNPDeviceID"].ToString().Split('\\');
string[] serialArray;
int arrayLen = splitDeviceId.Length - 1;
serialArray = splitDeviceId[arrayLen].Split('&');
_serialNumber = serialArray[0];
}
}
}
}
return _serialNumber;
}

7、编译生成.exe文件,放置U盘测试。有了U盘系列号,就可以构建自己的加密算法了。
