家庭视频监控系统(7)

3.getMNum()方法

getMNum()方法用来从得到的硬盘标识号和CPU序列号中取出一定的位数作为机器码,其实现代码如下:

例程07 代码位置:光盘\TM\01\VWMS\VWMS\CommonClass\SoftReg.cs

//生成机器码

public string getMNum()

{

string strNum = getCpu() + GetDiskVolumeSerialNumber(); //获得CPU和硬盘序列号

string strMNum = strNum.Substring(0,24); //从生成的字符串中取出前个字符作为机器码

return strMNum;

}

public int[] intCode = new int[127]; //存储密钥

public int[] intNumber = new int[25]; //存机器码的ASCII值

public char[] Charcode = new char[25]; //存储机器码字

public void setIntCode() //给数组赋值小于10的数

{

for (int i = 1; i < intCode.Length; i++)

{

intCode[i] = i % 9;

}

}

4.getRNum()方法

getRNum()方法用来根据得到的机器码生成注册码,其实现代码如下:

例程08 代码位置:光盘\TM\01\VWMS\VWMS\CommonClass\SoftReg.cs

//生成注册码

public string getRNum()

{

setIntCode(); //初始化为数组

for (int i = 1; i < Charcode.Length; i++) //把机器码存入数组中

{

Charcode[i] = Convert.ToChar(this.getMNum().Substring(i - 1, 1));

}

for (int j = 1; j < intNumber.Length; j++) //把字符的ASCII值存入一个整数组中

{

intNumber[j] = intCode[Convert.ToInt32(Charcode[j])] + Convert.ToInt32(Charcode[j]);

}

string strAsciiName = ""; //用于存储注册码

for (int j = 1; j < intNumber.Length; j++)

{

if (intNumber[j] >= 48 && intNumber[j] <= 57) //判断字符ASCII值是否在48~57之间

{

strAsciiName += Convert.ToChar(intNumber[j]).ToString();

}

else if (intNumber[j] >= 65 && intNumber[j] <= 90) //判断字符ASCII值是否在A~Z之间

{

strAsciiName += Convert.ToChar(intNumber[j]).ToString();

}

else if (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();

}

}

}

return strAsciiName;

}

注意:由于本实例中用到了ManagementClass、ManagementObject和ManagementObjectCollection类,所以需要在命名空间区域添加System.Management命名空间。

读书导航