C#(WinForm)实现软件注册SoftReg类:1usingSystem;2usingSystem.Collections.Generic;3usingSystem.Linq;4usingSystem.Text;5usingSystem.Management;67namespaceSoftRegister8{9classSoftReg10{11///summary12///获取硬盘卷标号13////summary14///returns/returns15publicstringGetDiskVolumeSerialNumber()16{17ManagementClassmc=newManagementClass(win32_NetworkAdapterConfiguration);18ManagementObjectdisk=newManagementObject(win32_logicaldisk.deviceid=\c:\);19disk.Get();20returndisk.GetPropertyValue(VolumeSerialNumber).ToString();21}2223///summary24///获取CPU序列号25////summary26///returns/returns27publicstringGetCpu()28{29stringstrCpu=null;30ManagementClassmyCpu=newManagementClass(win32_Processor);31ManagementObjectCollectionmyCpuCollection=myCpu.GetInstances();32foreach(ManagementObjectmyObjectinmyCpuCollection)33{34strCpu=myObject.Properties[Processorid].Value.ToString();35}36returnstrCpu;37}3839///summary40///生成机器码41////summary42///returns/returns43publicstringGetMNum()44{45stringstrNum=GetCpu()+GetDiskVolumeSerialNumber();46stringstrMNum=strNum.Substring(0,24);//截取前24位作为机器码47returnstrMNum;48}4950publicint[]intCode=newint[127];//存储密钥51publicchar[]charCode=newchar[25];//存储ASCII码52publicint[]intNumber=newint[25];//存储ASCII码值5354//初始化密钥55publicvoidSetIntCode()56{57for(inti=1;iintCode.Length;i++)58{59intCode[i]=i%9;60}61}6263///summary64///生成注册码65////summary66///returns/returns67publicstringGetRNum()68{69SetIntCode();70stringstrMNum=GetMNum();71for(inti=1;icharCode.Length;i++)//存储机器码72{73charCode[i]=Convert.ToChar(strMNum.Substring(i-1,1));74}75for(intj=1;jintNumber.Length;j++)//改变ASCII码值76{77intNumber[j]=Convert.ToInt32(charCode[j])+intCode[Convert.ToInt32(charCode[j])];78}79stringstrAsciiName=;//注册码80for(intk=1;kintNumber.Length;k++)//生成注册码81{8283if((intNumber[k]=48&&intNumber[k]=57)||(intNumber[k]=65&&intNumber[k]84=90)||(intNumber[k]=97&&intNumber[k]=122))//判断如果在0-9、A-Z、a-z之间85{86strAsciiName+=Convert.ToChar(intNumber[k]).ToString();87}88elseif(intNumber[k]122)//判断如果大于z89{90strAsciiName+=Convert.ToChar(intNumber[k]-10).ToString();91}92else93{94strAsciiName+=Convert.ToChar(intNumber[k]-9).ToString();95}96}97returnstrAsciiName;98}99}100}注册窗体:1usingSystem;2usingSystem.Collections.Generic;3usingSystem.ComponentModel;4usingSystem.Data;5usingSystem.Drawing;6usingSystem.Linq;7usingSystem.Text;8usingSystem.Windows.Forms;9usingMicrosoft.Win32;1011namespaceSoftRegister12{13publicpartialclassfrmRegisterForm:Form14{15publicfrmRegisterForm()16{17InitializeComponent();18}19publicstaticboolstate=true;//软件是否为可用状态20SoftRegsoftReg=newSoftReg();21privatevoidbtnClose_Click(objectsender,EventArgse)22{23if(state==true)24{25this.Close();26}27else28{29Application.Exit();30}31}3233privatevoidbtnReg_Click(objectsender,EventArgse)34{35try36{37if(txtRNum.Text==softReg.GetRNum())38{39MessageBox.Show(注册成功!重启软件后生效!,信息,MessageBoxButtons.OK,MessageBoxIcon.Information);40RegistryKeyretkey=Registry.CurrentUser.OpenSubKey(Software,true).CreateSubKey(wxf).CreateSubKey(wxf.INI).CreateSubKey(txtRNum.Text);41retkey.SetValue(UserName,Rsoft);42this.Close();43}44else45{46MessageBox.Show(注册码错误!,警告,MessageBoxButtons.OK,MessageBoxIcon.Warning);47txtRNum.SelectAll();48}49}50catch(Exceptionex)51{52thrownewException(ex.Message);53}54}5556privatevoidfrmRegisterForm_Load(objectsender,EventArgse)57{58this.txtMNum.Text=softReg.GetMNum();59}60}61}主窗体:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingMicrosoft.Win32;namespaceSoftRegister{publicpartialclassfrmMainForm:Form{publicfrmMainForm(){InitializeComponent();}SoftRegsoftReg=newSoftReg();privatevoidbtnClose_Click(objectsender,EventArgse){Application.Exit();}privatevoidbtnReg_Click(objectsender,EventArgse){frmRegisterFormfrmRegister=newfrmRegisterForm();frmRegister.ShowDialog();}///summary///窗体加载////summary///paramname=sender/param///paramname=e/paramprivatevoidfrmMainForm_Load(objectsender,EventArgse){//判断软件是否注册RegistryKeyretkey=Registry.CurrentUser.OpenSubKey(SOFTWARE,true).CreateSubKey(wxf).CreateSubKey(wxf.INI);foreach(stringstrRNuminretkey.GetSubKeyNames()){if(strRNum==softReg.GetRNum()){this.lblRegInfo.Text=此软件已注册!;this.btnReg.Enabled=false;return;}}this.Text=此软件尚未注册!;this.btnReg.Enabled=true;MessageBox.Show(您现在使用的是试用版,可以免费试用30次!,信息,MessageBoxButtons.OK,MessageBoxIcon.Information);Int32tLong;try{tLong=(Int32)Registry.GetValue(HKEY_LOCAL_MACHINE\\SOFTWARE\\Angel,UseTimes,0);MessageBox.Show(您已经使用了+tLong+次!,信息,MessageBoxButtons.OK,MessageBoxIcon.Information);}catch{MessageBox.Show(欢迎使用本软件!,信息,MessageBoxButtons.OK,MessageBoxIcon.Information);Registry.SetValue(HKEY_LOCAL_MACHINE\\SOFTWARE\\Angel,UseTimes,0,RegistryValueKind.DWord);}tLong=(Int32)Registry.GetValue(HKEY_LOCAL_MACHINE\\SOFTWARE\\Angel,UseTimes,0);if(tLong30){inttTimes=tLong+1;Registry.SetValue(HKEY_LOCAL_MACHINE\\SOFTWARE\\Angel,UseTimes,tTimes);}else{DialogResultresult=MessageBox.Show(试用次数已到!您是否需要注册?,信息,Mes