C# 读取机器码,CPU序列号,生成注册码类
2013-01-21 00:10
363 查看
有些CPU不支持获取序列号。
获取strCpu=myObject.Properties["Processorid"].Value.ToString();时,请判断下返回是否为null,为null的话就说明cpu不支持。
获取集合对象属性,除非100%确定,否则不要直接访问属性。一旦返回空,就会报空引用错误
获取strCpu=myObject.Properties["Processorid"].Value.ToString();时,请判断下返回是否为null,为null的话就说明cpu不支持。
获取集合对象属性,除非100%确定,否则不要直接访问属性。一旦返回空,就会报空引用错误
usingSystem.Management;//需要在项目中添加System.Management引用
namespaceECBC_CDKEY
{
publicclassSoftReg
{
///<summary>
///取得设备硬盘的卷标号
///</summary>
///<returns></returns>
publicstringGetDiskVolumeSerialNumber()
{
ManagementClassmc=newManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectdisk=newManagementObject("win32_logicaldisk.deviceid=\"c:\"");
disk.Get();
returndisk.GetPropertyValue("VolumeSerialNumber").ToString();
}
///<summary>
///获得CPU的序列号
///</summary>
///<returns></returns>
publicstringgetCpu()
{
stringstrCpu=null;
ManagementClassmyCpu=newManagementClass("win32_Processor");
ManagementObjectCollectionmyCpuConnection=myCpu.GetInstances();
foreach(ManagementObjectmyObjectinmyCpuConnection)
{
strCpu=myObject.Properties["Processorid"].Value.ToString();
break;
}
returnstrCpu;
}
///<summary>
///生成机器码
///</summary>
///<returns></returns>
publicstringgetMNum()
{
stringstrNum=getCpu()+GetDiskVolumeSerialNumber();//获得24位Cpu和硬盘序列号
stringstrMNum=strNum.Substring(0,24);//从生成的字符串中取出前24个字符做为机器码
returnstrMNum;
}
publicint[]intCode=newint[127];//存储密钥
publicint[]intNumber=newint[25];//存机器码的Ascii值
publicchar[]Charcode=newchar[25];//存储机器码字
publicvoidsetIntCode()//给数组赋值小于10的数
{
for(inti=1;i<intCode.Length;i++)
{
intCode[i]=i%9;
}
}
///<summary>
///生成注册码
///</summary>
///<returns></returns>
publicstringgetRNum()
{
setIntCode();//初始化127位数组
stringMNum=this.getMNum();//获取注册码
for(inti=1;i<Charcode.Length;i++)//把机器码存入数组中
{
Charcode[i]=Convert.ToChar(MNum.Substring(i-1,1));
}
for(intj=1;j<intNumber.Length;j++)//把字符的ASCII值存入一个整数组中。
{
intNumber[j]=intCode[Convert.ToInt32(Charcode[j])]+Convert.ToInt32(Charcode[j]);
}
stringstrAsciiName="";//用于存储注册码
for(intj=1;j<intNumber.Length;j++)
{
if(intNumber[j]>=48&&intNumber[j]<=57)//判断字符ASCII值是否0-9之间
{
strAsciiName+=Convert.ToChar(intNumber[j]).ToString();
}
elseif(intNumber[j]>=65&&intNumber[j]<=90)//判断字符ASCII值是否A-Z之间
{
strAsciiName+=Convert.ToChar(intNumber[j]).ToString();
}
elseif(intNumber[j]>=97&&intNumber[j]<=122)//判断字符ASCII值是否a-z之间
{
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();
}
}
}
returnstrAsciiName;//返回注册码
}
}
}
相关文章推荐
- C# 读取机器码,CPU序列号,生成注册码类(优化)
- C# 读取机器码,CPU序列号,生成注册码类(优化)
- C# 读取机器码,CPU序列号,生成注册码类(优化)
- C# 读取机器码,CPU序列号,生成注册码类(优化)
- C# 读取机器码,CPU序列号,生成注册码类
- C# 读取机器码,CPU序列号,生成注册码类(优化)
- C#实现注册码 CPU序列号,生成机器码 生成注册码 判断是否注册
- C#获取CPU序列号机器码并生成注册码
- C#实现注册码 CPU序列号,生成机器码 生成注册码 判断是否注册
- C#调用C++生成的dll获取CPU序列号(二)
- c#中,读取硬盘序列,CPU序列号,MAC地址程序例子。
- java RSA加密生成license,用CPU序列号生成机器码
- 纯java获取CPU序列号,生成机器码
- C#调用delphi生成的dll获取CPU序列号(一)
- C#调用C++生成的dll获取CPU序列号(一)
- C#调用delphi生成的dll获取CPU序列号(二)
- c#:Dataset读取XML文件动态生成菜单
- C#读取Excel数据动态生成对象并进行序列化
- c#中获取cpu序列号、网卡mac地址、ip地址、硬盘序列号、登录用户名、pc类型、计算机名称、物理内存
- C#获取CPU序列号,MAC地址,硬盘ID…