c# 给自己写的软件加注册码功能Word格式.docx
- 文档编号:19713064
- 上传时间:2023-01-09
- 格式:DOCX
- 页数:8
- 大小:16.10KB
c# 给自己写的软件加注册码功能Word格式.docx
《c# 给自己写的软件加注册码功能Word格式.docx》由会员分享,可在线阅读,更多相关《c# 给自己写的软件加注册码功能Word格式.docx(8页珍藏版)》请在冰豆网上搜索。
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();
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.Length;
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位数组
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;
//用于存储机器码
j<
intNumber.Length;
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)
//判断字符ASCII值是否a-z之间
=97&
intNumber[j]122)
else//判断字符ASCII值不在以上范围内
122)//判断字符ASCII值是否大于z
{
strAsciiName+=Convert.ToChar(intNumber[j]-10).ToString();
else
strAsciiName+=Convert.ToChar(intNumber[j]-9).ToString();
//label3.Text=strAsciiName;
//得到注册码
returnstrAsciiName;
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("
"
BBC6D58D0953F027760A046D58D52786"
retkey=Microsoft.Win32.Registry.LocalMachine.
returnStupids;
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=="
if(localRegKey.OpenSubKey("
+GetMd5(sn)).GetValue("
).ToString()=="
flag=true;
keynames=userRegKey.OpenSubKey("
if(flag&
userRegKey.OpenSubKey("
returntrue;
returnfalse;
catch
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# 给自己写的软件加注册码功能 自己 软件 注册码 功能
![提示](https://static.bdocx.com/images/bang_tan.gif)