有些小型工具软件,往往需要做些加密保护,但客户又需要安装在U盘中,那么就会需要获得U盘的序列号。(U盘的序列号一般都是唯一的,是能起到一定的加密作用的。)
工具/原料
vs2013
普通U盘
方法/步骤
1、首先打开vs2013(其他版本也可以),在C#项目中选择Windows窗体应用程序。写上项目名字点创建。(本例用VS2013系统默认项目名,路径随意。)
2、创建项目后,可以看到一个窗口,将Form1窗口的Text属性改为"C#得到普通曷决仙喁U盘序列号";在工具箱中拖一个“Button”按钮和“TexBox”文本框,调整界面如下图。
3、双击“button1”按钮,跳出代码窗口。在button1_Click函数中输入2行代码。咯悝滩镞privatevoidbutton1_Click(object惺绅寨瞀sender,EventArgse){stringstr=Get_U盘系列号();this.textBox1.Text=str;}其中Get_U盘系列号()为自定义的获取U盘系列号的函数。
4、点击Get_U盘系列号(),让vs2013系统帮忙新建函数,可省掉书写时间。
5、依次点击“项目“->“添加项目”->“System.Management”->确定
6、完善Get_U盘系列号()傲艟茏慕方法。privatestringGet_U盘系列号(){string_driveLetter=惺绅寨瞀Application.StartupPath.Substring(0,2);//得到盘符string[]diskArray;stringdriveNumber;stringdriveLetter;string_serialNumber="";ManagementObjectSearchersearcher1=newManagementObjectSearcher("SELECT*FROMWin32_LogicalDiskToPartition");foreach(ManagementObjectdminsearcher1.Get()){diskArray=null;stringinValue=dm["Dependent"].ToString();intposFoundStart=0;intposFoundEnd=0;posFoundStart=inValue.IndexOf("\"");posFoundEnd=inValue.IndexOf("\"",posFoundStart+1);driveLetter=inValue.Substring(posFoundStart+1,(posFoundEnd-posFoundStart)-1);inValue=dm["Antecedent"].ToString();stringdriveLetter2="";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){ManagementObjectSearcherdisks=newManagementObjectSearcher("SELECT*FROMWin32_DiskDrive");foreach(ManagementObjectdiskindisks.Get()){if(disk["Name"].ToString()==("\\\\.\\PHYSICALDRIVE"+driveNumber)&disk["InterfaceType"].ToString()=="USB"){string[]splitDeviceId=disk["PNPDeviceID"].ToString().Split('\\');string[]serialArray;intarrayLen=splitDeviceId.Length-1;serialArray=splitDeviceId[arrayLen].Split('&');_serialNumber=serialArray[0];}}}}return_serialNumber;}
7、编译生成.exe文件,放置U盘测试。有了U盘系列号,就可以构建自己的加密算法了。