要实现软件注册功能,首先需要知道实现注册机制要涉及到的几个问题:1、如何加入注册检测,判断软件是否注册;2、如何生成注册码,如何保证一个用户名只生成与之唯一对应的注册码;3、在软件不注册情况下,如何限制软件功能的局限性;4、对已经负费使用用户而言,不应造成使用不便。
首先,应该有一个生成注册码的算法,以下是我简单的一个生成15位注册码的算法:该函数返回一个CSTRING类型的15位注册码,入口参数为用户名CString GetRegPasswd(CString &DirName) {将用户名换算成15位注册码long Num1,Num2,Num3char sn[16]={0}CString pint i,lenNum1=0Num2=0Num3=0len=int(strlen(DirName))if(len!=0){for( i=1i<=leni++){第一步算法Num1=(long(Num1+(int(DirName[i-1])*i*i)*(i*sqrt(DirName[i-1])+1)))%100000;第二步算法Num2=(Num2*i+(long(pow((int)DirName[i-1],2)*i)))%100000;第三步算法Num3=(Num2+(long)sqrt(Num1))%100000;}以下把三个算法结果分别生成5个字符,共有15个for(i=0i<5i++)sn[i]=(int)(Num1+31+i*i*i)%128for(i=5i<10i++)sn[i]=(int)(Num2+31+i*i*i)%128for(i=10i<15i++)sn[i]=(int)(Num3+31+i*i*i)%128sn[15]=0;以下循环把所有生成的字符转换为0---9,A---Z,a----zfor(i=0i<15i++){while((sn[i]<'0' || sn[i]>'9') &&(sn[i]<'A' || sn[i]>'Z') &&(sn[i]<'a' || sn[i]>'z') ){sn[i]=(sn[i]+31+7*i)%128;}}赋值给一个CSTRING变量,用做函数返回值p.Format("%s",sn)}return p;} 检查软件是否注册的函数BOOL GetRegFlag(void){HKEY hKey = NULLBYTE iCString strstr.LoadString(IDS_REG_KEY)IDS_REG_KEY为在注册表中的子目录字符串if (RegCreateKey(HKEY_CURRENT_USER, str, &hKey) != ERROR_SUCCESS) return falseDWORD cbAcbA=sizeof(int)if( RegQueryValueEx(hKey, "SzMima",NULL,NULL, &i,&cbA) != ERROR_SUCCESS)return falseBYTE j=iif(j==0)0代表软件已经注册,可以正常使用{RegCloseKey(hKey)return true}else{RegCloseKey(hKey)return false}return false;};设置软件已经注册标志的函数BOOL SetRegFlag(void){HKEY hKey = NULLBYTE iCString strstr.LoadString(IDS_REG_KEY)IDS_REG_KEY为在注册表中的子目录字符串if (RegCreateKey(HKEY_CURRENT_USER, str, &hKey) != ERROR_SUCCESS) return falseBYTE j=00代表已经注册if(RegSetValueEx(hKey, "SzMima", 0, REG_BINARY, &j,4) != ERROR_SUCCESS){AfxMessageBox("设置注册表数据失败!");return FALSE}return false;};以上三个函数即可实现软件注册机制,只需要在程序初始化的时候加入以下几句代码即可BOOL bReg= GetRegFlag ()if(!bReg){在此加入限制功能或者拒绝是使用的代码}如果用户注册只需要加入以下代码即可这是我的程序中的一个注册界面,输入用户名和注册码提交后检验注册码是否正确的代码void CRegEdit::OnBnClickedOk(){if(!UpdateData()) return;取得编辑框的内容,并赋值到类变量中m_RegUser.TrimLeft()m_RegUser是用户名m_RegUser.TrimRight()if(m_RegUser.IsEmpty()){AfxMessageBox("用户名不能为空,请重新输入。");GetDlgItem(IDC_REGUSER)->SetFocus()return}m_RegPasswd.TrimLeft()m_RegPasswd是注册码m_RegPasswd.TrimRight()if(m_RegPasswd.IsEmpty()){AfxMessageBox("注册码不能为空,请重新输入。
");GetDlgItem(IDC_REGPASSWD)->SetFocus()return}CString PasswdPasswd=GetRegPasswd(m_RegUser);调用算法取得该用户名的注册码if(Passwd==m_RegPasswd)与用户输入的注册进行比较{SetRegFlag();设置注册标志OnOK()}elseAfxMessageBox("注册码错误,请重新输入。");UpdateData(false)}RSA做软件的注册功能,如果密钥设置的比较大位数的话,基本别人是无法写出注册机的,但是防止别人暴破你的程序又是另一回事了。
Imports System.Security.CryptographyImports System.TextImports System.IOImports System.XmlPublic Class FrmReg Inherits System.Windows.Forms.Form 'Dim xmlKeys As String 'A bination of both the public and 'private keys 'Dim xmlPublicKey As String 'The public key only ''The plaintext message in a byte array 'Dim PlainTextBArray As Byte() ''The cyphertext message in a byte array 'Dim CypherTextBArray As Byte()#Region " Windows 窗体设计器生成的代码 " Public Sub New() MyBase.New() '该调用是 Windows 窗体设计器所必需的。 Initializeponent() '在 Initializeponent() 调用之后添加任何初始化 End Sub '窗体重写 dispose 以清理组件列表。
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If disposing Then If Not (ponents Is Nothing) Then ponents.Dispose() End If End If MyBase.Dispose(disposing) End Sub 'Windows 窗体设计器所必需的 Private ponents As System.ponentModel.IContainer '注意: 以下过程是 Windows 窗体设计器所必需的 '可以使用 Window。
2. 怎么样把苹果软件放网络上让别人下载
打开“设置”, 选择“通用”—— 按照前面介绍的方法,启用“访问限制”——在“允许的内容”中,点击“应用程序”—— 选择“不允许应用程序”来隐藏所有从App Store下载的从应用程序
这时你回到主屏幕会发现从App Store下载的应用全部消失了,连苹果官方的应用也不例外。
与前面的设置相同,全部的应用只是被隐藏起来,并没有被删除;撤销原来的 *** 作,只需要在“访问限制”里设置“允许所有应用程序”就可以了。这个小技巧在你要把iOS设备临时借给别人用的时候也非常有用,你不用删除那些包含个人隐私的应用;如果小朋友想用你的iPad,在“访问限制”里同样可以隐藏掉不适宜小朋友使用的应用、禁止删除应用并且关闭应用内的支付功能。
iPad/iPhone中如何把应用图标放到文件夹里面
按住应用图标不放直到他们开始左右晃动——把一个图标拽到另外一个图标的上面去,就会创建一个文件夹,给新文件夹起一个名字——把其他的应用拽到这个新建的文件夹里面去
这种做法有点像你收拾屋子的时候把一些不常用的东西放到角落的一个箱子里去。
易语言写图片资源把成本软件加到网络验证如下。1、第一步选择需要加密的软件。
2、第二步点击开始加密。
3、第三步打开软件加密完成。
4、第四步进入后台管理。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)