//该函数返回一个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)))%100000;
//第二步算法
Num2=(Num2*i+(long(pow((int)DirNamei-1,2)*i)))%100000;
//第三步算法
Num3=(Num2+(long)sqrt(Num1))%100000;
//以下把三个算法结果分别生成5个字符,共有15个
for(i=0;i<5;i++)
sni=(int)(Num1+31+i*i*i)%128;
for(i=5;i<10;i++)
sni=(int)(Num2+31+i*i*i)%128;
for(i=10;i<15;i++)
sni=(int)(Num3+31+i*i*i)%128;
sn15=0;
//以下循环把所有生成的字符转换为09,AZ,az
for(i=0;i<15;i++)
while((sni<0sni>9) &&(sniZ)&&(sniz) )
sni=(sni+31+7*i)%128;
//赋值给一个CSTRING变量,用做函数返回值
p.Format(%s,sn);
return p;
//检查软件是否注册的函数热门推荐: 如何迅速成为Java高手 成为编程高手的八大奥秘
1 2
![]()
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(设置注册表数据失败!);