选择显示字体大小

如何用vc实现软件注册

要实现软件注册功能,首先需要知道实现注册机制要涉及到的几个问题:1、如何加入注册检测,判断软件是否注册;2、如何生成注册码,如何保证一个用户名只生成与之唯一对应的注册码;3、在软件不注册情况下,如何限制软件功能的局限性;4、对已经负费使用用户而言,不应造成使用不便。

  首先,应该有一个生成注册码的算法,以下是我简单的一个生成15位注册码的算法:


  //该函数返回一个cstring类型的15位注册码,入口参数为用户名

  cstring getregpasswd(cstring &dirname)

  //将用户名换算成15位注册码

  long num1,num2,num3;

  char sn16=0;

  cstring p;

  int i,len;

  num1=0;

  num2=0;

  num3=0;

  len=int(strlen(dirname));

  for( i=1;i<=len;i++)

  //第一步算法

  num1=(long(num1+(int(dirnamei-1)*i*i)*(i*sqrt(dirnamei-1)+1)))&#37;100000;

  //第二步算法

  num2=(num2*i+(long(pow((int)dirnamei-1,2)*i)))&#37;100000;

  //第三步算法

  num3=(num2+(long)sqrt(num1))&#37;100000;

  //以下把三个算法结果分别生成5个字符,共有15个

  for(i=0;i<5;i++)

  sni=(int)(num1+31+i*i*i)&#37;128;

  for(i=5;i<10;i++)

  sni=(int)(num2+31+i*i*i)&#37;128;

  for(i=10;i<15;i++)

  sni=(int)(num3+31+i*i*i)&#37;128;

  sn15=0;

  //以下循环把所有生成的字符转换为09,az,az

  for(i=0;i<15;i++)

  while((sni<0sni>9) &&(sniz)&&(sniz) )

  sni=(sni+31+7*i)&#37;128;

  //赋值给一个cstring变量,用做函数返回值

  p.format(&#37;s,sn);

  return p;

  //检查软件是否注册的函数:

 
  bool getregflag(void)

  hkey hkey = null;

  byte i;

  cstring str;

  str.loadstring(ids_reg_key);// ids_reg_key为在注册表中的子目录字符串

  if (regcreatekey(hkey_current_user, str, &hkey)!=error_success) return false;

  dword cba;

  cba=sizeof(int);

  return false;

  byte j=i;

  regclosekey(hkey);

  return true;

  else

  regclosekey(hkey);

  return false;

  return false;

  ;

  //设置软件已经注册标志的函数

  bool setregflag(void)

  hkey hkey = null;

  byte i;

  cstring str;

  str.loadstring(ids_reg_key);// ids_reg_key为在注册表中的子目录字符串

  if (regcreatekey(hkey_current_user, str, &hkey)!=error_success) return false;

  byte j=0;//0代表已经注册

  afxmessagebox(设置注册表数据失败!);

  return false;

  return false;

  ;

  以上三个函数即可实现软件注册机制,只需要在程序初始化的时候加入以下几句代码即可

  bool breg= getregflag ();

  //在此加入限制功能或者拒绝是使用的代码

  如果用户注册只需要加入以下代码即可

  //这是我的程序中的一个注册界面,输入用户名和注册码提交后检验注册码是否正确的代码

  void cregedit::onbnclickedok()

  m_reguser.trimcenter();//m_reguser是用户名

  m_reguser.trimcenter();

  afxmessagebox(用户名不能为空,请重新输入。);

  getdlgitem(idc_reguser)->setfocus();

  return;

  m_regpasswd.trimcenter();m_regpasswd是注册码

  m_regpasswd.trimcenter();

  afxmessagebox(注册码不能为空,请重新输入。);

  getdlgitem(idc_regpasswd)->setfocus();

  return;

  cstring passwd;

  passwd=getregpasswd(m_reguser);//调用算法取得该用户名的注册码

  setregflag();//设置注册标志

  onok();

  else

  afxmessagebox(注册码错误,请重新输入。);

  updatedata(false);
 
  作者:程序员之家


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons