c# 给自己写的软件加注册码功能.docx
- 文档编号:6696069
- 上传时间:2023-01-09
- 格式:DOCX
- 页数:8
- 大小:16.10KB
c# 给自己写的软件加注册码功能.docx
《c# 给自己写的软件加注册码功能.docx》由会员分享,可在线阅读,更多相关《c# 给自己写的软件加注册码功能.docx(8页珍藏版)》请在冰豆网上搜索。
c#给自己写的软件加注册码功能
C#给自己写的软件,加注册码功能。
为自己写的程序加一个注册功能吧。
生成的机器号是根据CPU和硬盘号来的,根据自己的需求改成是否是随机生成。
代码直接粘贴到新建类覆盖原代码就能直接用了。
usingSystem;
usingSystem.Management;
usingSystem.Security.Cryptography;
usingSystem.Text;
namespaceRegisterClass
{
classRegisterClass
{
//步骤一:
获得CUP序列号和硬盘序列号的实现代码如下:
//获得CPU的序列号
boolStupids=true;
boolCat=false;
publicstringgetCpu()
{
stringstrCpu=null;
ManagementClassmyCpu=newManagementClass("win32_Processor");
ManagementObjectCollectionmyCpuConnection=myCpu.GetInstances();
foreach(ManagementObjectmyObjectinmyCpuConnection)
{
strCpu=myObject.Properties["Processorid"].Value.ToString();
break;
}
returnstrCpu;
}
//取得设备硬盘的卷标号
publicstringGetDiskVolumeSerialNumber()
{
ManagementClassmc=
newManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectdisk=
newManagementObject("win32_logicaldisk.deviceid=\"c:
\"");
disk.Get();
returndisk.GetPropertyValue("VolumeSerialNumber").ToString();
}
//步骤二:
收集硬件信息生成机器码,代码如下:
//生成机器码
publicstringCreateCode()
{
stringtemp=getCpu()+GetDiskVolumeSerialNumber();//获得24位Cpu和硬盘序列号
string[]strid=newstring[24];//
for(inti=0;i24;i++)//把字符赋给数组
{
strid[i]=temp.Substring(i,1);
}
temp="";
//Randomrdid=newRandom();
for(inti=0;i24;i++)//从数组随机抽取24个字符组成新的字符生成机器三
{
//temp+=strid[rdid.Next(0,24)];
temp+=strid[i+3>=24?
0:
i+3];
}
returnGetMd5(temp);
}
//步骤三:
使用机器码生成软件注册码,代码如下:
//使用机器码生成注册码
publicint[]intCode=newint[127];//用于存密钥
publicvoidsetIntCode()//给数组赋值个小于10的随机数
{
//Randomra=newRandom();
//for(inti=1;i //{ //intCode[i]=ra.Next(0,9); //} for(inti=1;i9? 0: i+3; } } publicint[]intNumber=newint[25];//用于存机器码的Ascii值 publicchar[]Charcode=newchar[25];//存储机器码字 //生成注册码 publicstringGetCode(stringcode) { if(code! ="") { //把机器码存入数组中 setIntCode();//初始化127位数组 for(inti=1;i//把机器码存入数组中 { Charcode[i]=Convert.ToChar(code.Substring(i-1,1)); }// for(intj=1;j//把字符的ASCII值存入一个整数组中。 { intNumber[j]= intCode[Convert.ToInt32(Charcode[j])]+ Convert.ToInt32(Charcode[j]); } stringstrAsciiName=null;//用于存储机器码 for(intj=1;j { //MessageBox.Show((Convert.ToChar(intNumber[j])).ToString()); //判断字符ASCII值是否0-9之间 if(intNumber[j]>=48&&intNumber[j]57) { strAsciiName+=Convert.ToChar(intNumber[j]).ToString(); } //判断字符ASCII值是否A-Z之间 elseif(intNumber[j]>=65&&intNumber[j]90) { strAsciiName+=Convert.ToChar(intNumber[j]).ToString(); } //判断字符ASCII值是否a-z之间 elseif(intNumber[j]>=97&&intNumber[j]122) { strAsciiName+=Convert.ToChar(intNumber[j]).ToString(); } else//判断字符ASCII值不在以上范围内 { if(intNumber[j]>122)//判断字符ASCII值是否大于z { strAsciiName+=Convert.ToChar(intNumber[j]-10).ToString(); } else { strAsciiName+=Convert.ToChar(intNumber[j]-9).ToString(); } } //label3.Text=strAsciiName;//得到注册码 } returnstrAsciiName; } else { return""; } } //步骤四: 用户输入注册码注册软件,演示代码如下: //注册 publicboolRegistIt(stringcurrentCode,stringrealCode) { if(realCode! ="") { if(currentCode.TrimEnd().Equals(realCode.TrimEnd())) { Microsoft.Win32.RegistryKeyretkey= Microsoft.Win32.Registry.CurrentUser. OpenSubKey("software",true).CreateSubKey("StupidsCat"). CreateSubKey("StupidsCat.ini"). CreateSubKey(currentCode.TrimEnd()); retkey.SetValue("StupidsCat","BBC6D58D0953F027760A046D58D52786"); retkey=Microsoft.Win32.Registry.LocalMachine. OpenSubKey("software",true).CreateSubKey("StupidsCat"). CreateSubKey("StupidsCat.ini"). CreateSubKey(currentCode.TrimEnd()); retkey.SetValue("StupidsCat","BBC6D58D0953F027760A046D58D52786"); returnStupids; } else { returnCat; } } else{returnCat;} } publicboolBoolRegist(stringsn) { string[]keynames;boolflag=false; Microsoft.Win32.RegistryKeylocalRegKey=Microsoft.Win32.Registry.LocalMachine; Microsoft.Win32.RegistryKeyuserRegKey=Microsoft.Win32.Registry.CurrentUser; try { keynames=localRegKey.OpenSubKey("software\\StupidsCat\\StupidsCat.ini\\"+GetMd5(sn)).GetValueNames(); foreach(stringnameinkeynames) { if(name=="StupidsCat") { if(localRegKey.OpenSubKey("software\\StupidsCat\\StupidsCat.ini\\"+GetMd5(sn)).GetValue("StupidsCat").ToString()=="BBC6D58D0953F027760A046D58D52786") flag=true; } } keynames=userRegKey.OpenSubKey("software\\StupidsCat\\StupidsCat.ini\\"+GetMd5(sn)).GetValueNames(); foreach(stringnameinkeynames) { if(name=="StupidsCat") { if(flag&&userRegKey.OpenSubKey("software\\StupidsCat\\StupidsCat.ini\\"+GetMd5(sn)).GetValue("StupidsCat").ToString()=="BBC6D58D0953F027760A046D58D52786") returntrue; } } returnfalse; } catch { returnfalse; } finally { localRegKey.Close(); userRegKey.Close(); } } publicstringGetMd5(objecttext) { stringpath=text.ToString(); MD5CryptoServiceProviderMD5Pro=newMD5CryptoServiceProvider(); Byte[]buffer=Encoding.GetEncoding("utf-8").GetBytes(text.ToString()); Byte[]byteResult=MD5Pro.ComputeHash(buffer); stringmd5result=BitConverter.ToString(byteResult).Replace("-",""); returnmd5result; } } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c# 给自己写的软件加注册码功能 自己 软件 注册码 功能