C#程序注册激活代码Word文档下载推荐.docx

上传人:b****6 文档编号:19121238 上传时间:2023-01-04 格式:DOCX 页数:19 大小:50.21KB
下载 相关 举报
C#程序注册激活代码Word文档下载推荐.docx_第1页
第1页 / 共19页
C#程序注册激活代码Word文档下载推荐.docx_第2页
第2页 / 共19页
C#程序注册激活代码Word文档下载推荐.docx_第3页
第3页 / 共19页
C#程序注册激活代码Word文档下载推荐.docx_第4页
第4页 / 共19页
C#程序注册激活代码Word文档下载推荐.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

C#程序注册激活代码Word文档下载推荐.docx

《C#程序注册激活代码Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C#程序注册激活代码Word文档下载推荐.docx(19页珍藏版)》请在冰豆网上搜索。

C#程序注册激活代码Word文档下载推荐.docx

如果由keyName指定的子项不存在,则返回null;

否则,返回与valueName关联的值;

或者,如果未找到valueName,则返回defaultValue。

例如,下面代码用来获取软件的使用次数:

tLong=(Int32)Registry.GetValue("

HKEY_LOCAL_MACHINE/SOFTWARE/tryTimes"

"

UseTimes"

0);

Registry类位于Microsoft.Win32命名空间下。

(2)Registry类的SetValue方法

Registry类的SetValue方法用来设置注册表项中的名称/值对的值,该方法为可重载方法,它有两种重载形式,第一种重载形式语法格式如下:

publicstaticvoidSetValue(stringkeyName,stringvalueName,Objectvalue)

value:

要存储的值。

第二种重载形式语法格式如下:

publicstaticvoidSetValue(stringkeyName,stringvalueName,Objectvalue,RegistryValueKindvalueKind)

valueKind:

存储数据时使用的注册表数据类型。

例如,本实例中将软件使用次数写入注册表的实现代码如下:

if(tLong<

30)

{

intTimes=tLong+1;

Registry.SetValue("

Times);

}

(3)ManagementClass类

ManagementClass类表示公共信息模型(CIM)管理类。

管理类是一个WMI类,如Win32_LogicalDisk类和Win32_Process类,前者表示磁盘驱动器,后者表示进程(如Notepad.exe)。

通过该类的成员,可以使用特定的WMI类路径访问WMI数据。

例如,本实例中使用ManagementClass类对本地进程信息进行访问,代码如下:

ManagementClassmyCpu=newManagementClass("

win32_Processor"

);

(4)ManagementObject类

ManagementObject类表示WMI实例,本实例中用到该类的Get方法、GetPropertyValue方法和Properties属性,其中Get方法用来将WMI类信息绑定到管理对象,其语法格式如下:

publicvoidGet()

GetPropertyValue方法用来获取某属性值的等效访问器,其语法格式如下:

publicObjectGetPropertyValue(stringpropertyName)

propertyName:

相关的属性的名称。

指定的属性的值。

例如,本实例中获取硬盘序列号的代码如下:

ManagementObjectdisk=newManagementObject("

win32_logicaldisk.deviceid="

d:

"

disk.Get();

returndisk.GetPropertyValue("

VolumeSerialNumber"

).ToString();

Properties属性用来获取描述管理对象属性的PropertyData对象的集合,其语法格式如下:

publicvirtualPropertyDataCollectionProperties{get;

}

属性值:

返回一个PropertyDataCollection,它包含管理对象的属性。

例如,本实例中获取CPU序列号的代码如下:

foreach(ManagementObjectmyObjectinmyCpuConnection)

strCpu=myObject.Properties["

Processorid"

].Value.ToString();

break;

(5)ManagementObjectCollection类

ManagementObjectCollection类表示通过WMI检索到的管理对象的不同集合,此集合中的对象为从ManagementBaseObject派生的类型,包括ManagementObject和ManagementClass。

例如,本实例中通过使用ManagementClass对象的GetInstances方法获取管理对象集合,代码如下:

ManagementObjectCollectionmyCpuConnection=myCpu.GetInstances();

ManagementClass类、ManagementObject类和ManagementObjectCollection类都位于System.Management命名空间下,添加该命名空间时,首先需要在“添加引用”中添加System.Management.dll组件。

实现过程

(1)新建一个Windows应用程序,将其命名为LimitSoftUseTimes,将其默认窗体重命名为frmMain。

(2)在LimitSoftUseTimes项目中添加一个Windows窗体,命名为frmRegister,用来实现软件注册功能。

frmRegister窗体主要用到的控件及说明如表1所示。

表1frmRegister窗体主要用到的控件及说明

(3)主要程序代码。

frmMain窗体加载时,首先判断程序是否注册,如果已经注册,则将主窗体Text属性设置为“主窗体(已注册)”,否则,将主窗体Text属性设置为“主窗体(未注册)”,并且提示软件为试用版和已经使用的次数,同时将注册表中记录的软件使用次数加一。

frmMain窗体的Load事件代码如下:

privatevoidfrmMain_Load(objectsender,EventArgse)

RegistryKeyretkey=Microsoft.Win32.Registry.LocalMachine.OpenSubKey("

software"

true).CreateSubKey("

mrwxk"

).CreateSubKey("

mrwxk.ini"

//打开注册表项

foreach(stringstrRNuminretkey.GetSubKeyNames())//判断是否注册

if(strRNum==softreg.getRNum())//判断注册码是否相同

this.Text="

主窗体(已注册)"

;

button1.Enabled=false;

return;

主窗体(未注册)"

button1.Enabled=true;

MessageBox.Show("

您现在使用的是试用版,该软件可以免费试用30次!

提示"

MessageBoxButtons.OK,MessageBoxIcon.Information);

Int32tLong;

try

//获取软件的已经使用次数

感谢您已使用了"

+tLong+"

次"

catch

//首次使用软件

0,RegistryValueKind.DWord);

欢迎新用户使用本软件"

//获取软件已经使用次数

//计算软件本次是第几次使用

//将软件使用次数写入注册表

else

试用次数已到"

警告"

MessageBoxButtons.OK,MessageBoxIcon.Warning);

Application.Exit();

//退出应用程序

上面的代码中用到getRNum方法,该方法用来根据指定的机器码生成注册码,实现代码如下:

//生成注册码

publicstringgetRNum()

setIntCode();

//初始化127位数组

for(inti=1;

i<

Charcode.Length;

i++)//把机器码存入数组中

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

for(intj=1;

j<

intNumber.Length;

j++)//把字符的ASCII值存入一个整数组中。

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

stringstrAsciiName="

//用于存储注册码

j++)

if(intNumber[j]>

=48&

&

intNumber[j]<

=57)//判断字符ASCII值是否0-9之间

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

elseif(intNumber[j]>

=65&

=90)//判断字符ASCII值是否A-Z之间

=97&

=122)//判断字符ASCII值是否a-z之间

else//判断字符ASCII值不在以上范围内

122)//判断字符ASCII值是否大于z

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

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

returnstrAsciiName;

//返回生成的注册码

在frmMain窗体中单击“注册”按钮时,弹出“软件注册”窗体,该窗体加载时自动获得本机机器码,实现代码如下:

privatevoidfrmRegister_Load(objectsender,EventArgse)

textBox1.Text=softreg.getMNum();

上面的代码中用到getMNum方法,该方法为自定义的返回值类型为string类型的方法,它主要用来根据本机的CPU和硬盘序列号生成本机机器码。

getMNum方法实现代码如下:

//生成机器码

publicstringgetMNum()

stringstrNum=getCpu()+GetDiskVolumeSerialNumber();

//获得24位Cpu和硬盘序列号

stringstrMNum=strNum.Substring(0,24);

//从生成的字符串中取出前24个字符做为机器码

returnstrMNum;

//返回生成的机器码

getMNum方法中用到getCpu和GetDiskVolumeSerialNumber两个自定义方法,其中getCpu方法用来获取本机CPU序列号,GetDiskVolumeSerialNumber方法用来获取本机硬盘序列号,它们的实现代码如下:

//获得CPU的序列号

publicstringgetCpu()

stringstrCpu=null;

//获取系统CPU处理器

//获取CPU序列号

returnstrCpu;

//取得设备硬盘的序列号

publicstringGetDiskVolumeSerialNumber()

//获取系统硬盘

ManagementClassmc=newManagementClass("

Win32_NetworkAdapterConfiguration"

//返回硬盘序列号

frmRegister窗体中单击“注册”按钮时,程序首先判断是否输入注册码,如果没有,弹出信息提示,否则判断用户输入的注册码与本机应该生成的注册码是否相同,如果相同,则注册成功,并将软件注册信息写入到注册表中。

“注册”按钮的Click事件代码如下:

privatevoidbutton1_Click(objectsender,EventArgse)

if(textBox2.Text=="

)//判断是否输入了注册码

注册码输入不能为空!

if(textBox2.Text.Equals(softreg.getRNum()))//判断注册码是否正确

).CreateSubKey(textBox2.Text);

//打开注册表项,并创建一个子项

retkey.SetValue("

UserName"

mrsoft"

//为新创建的注册表项设置值

注册成功,程序需要重新加载!

this.Hide();

//隐藏当前窗体

frmMainfrmmain=newfrmMain()//实例化主窗体对象;

frmmain.Show();

//显示主窗体

注册码输入错误!

错误"

MessageBoxButtons.OK,MessageBoxIcon.Error);

------------------------------------------------------------------------------------------------------

代码示例:

注册类:

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Text;

usingSystem.Management;

 

namespaceSoftRegister

publicclassSoftReg

{

///<

summary>

///获取硬盘卷标号

/summary>

returns>

<

/returns>

privatestringGetDiskVolumeSerialNumber()

ManagementClassmc=newManagementClass("

win32_NetworkAdapterConfiguration"

ManagementObjectdisk=newManagementObject("

win32_logicaldisk.deviceid=\"

c:

\"

disk.Get();

returndisk.GetPropertyValue("

///获取CPU序列号

privatestringGetCpu()

stringstrCpu=null;

ManagementClassmyCpu=newManagementClass("

ManagementObjectCollectionmyCpuCollection=myCpu.GetInstances();

foreach(ManagementObjectmyObjectinmyCpuCollection)

strCpu=myObject.Properties["

returnstrCpu;

///生成机器码

publicstringGetMNum()

stringstrNum=GetCpu()+GetDiskVolumeSerialNumber();

stringstrMNum=strNum.Substring(0,24);

//截取前24位作为机器码

returnstrMNum;

privateint[]intCode=newint[127];

//存储密钥

privatechar[]charCode=newchar[25];

//存储ASCII码

privateint[]intNumber=newint[25];

//存储ASCII码值

//初始化密钥

privatevoidSetIntCode()

for

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 公务员考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1