📄 register.cpp
字号:
// Register.cpp: implementation of the CRegister class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "gettime.h"
#include "Register.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
#define total 2592000
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CRegister::CRegister()
{
}
CRegister::~CRegister()
{
}
BOOL CRegister::GetlimitTime(datatime &t) //读取数据表数据
{
HKEY m_hKey;
DWORD dwDisposition;
DWORD dwType;
DWORD dwLen;
LONG ret=RegCreateKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\TimeLimit",0L,NULL,
REG_OPTION_VOLATILE,KEY_ALL_ACCESS,NULL,&m_hKey,&dwDisposition);
if (ret!=ERROR_SUCCESS)
{
return false;
}
ret=RegQueryValueEx(m_hKey,"leavetime",NULL,&dwType,(unsigned char*)&t.leavetime,&dwLen);
if (ret!=ERROR_SUCCESS)
{
return false;
}
ret=RegQueryValueEx(m_hKey,"lasttime",NULL,&dwType,(unsigned char*)&t.lasttime,&dwLen);
if (ret!=ERROR_SUCCESS)
{
return false;
}
ret=RegQueryValueEx(m_hKey,"usetime",NULL,&dwType,(unsigned char*)&t.usetime,&dwLen);
if (ret!=ERROR_SUCCESS)
{
return false;
}
// t.leavetime=t.leavetime^432;
// t.lasttime=t.lasttime^324;
RegCloseKey(m_hKey);
return true;
}
BOOL CRegister::SetLimitTime(datatime t) //加密数据,写入注册表,
{
HKEY m_hKey;
DWORD dwDisposition;
LONG ret=RegCreateKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\TimeLimit",0L,NULL,
REG_OPTION_VOLATILE,KEY_ALL_ACCESS,NULL,&m_hKey,&dwDisposition);
if (ret!=ERROR_SUCCESS)
{
return false;
}
// t.leavetime=t.leavetime^432;
// t.lasttime=t.lasttime^324;
ret=RegSetValueEx(m_hKey,"leavetime",NULL,REG_DWORD,(const byte *)&t.leavetime,sizeof(DWORD));
if (ret!=ERROR_SUCCESS)
{
return false;
}
ret=RegSetValueEx(m_hKey,"lasttime",NULL,REG_DWORD,(const byte *)&t.lasttime,sizeof(DWORD));
if (ret!=ERROR_SUCCESS)
{
return false;
}
ret=RegSetValueEx(m_hKey,"usetime",NULL,REG_DWORD,(const byte *)&t.usetime,sizeof(DWORD));
if (ret!=ERROR_SUCCESS)
{
return false;
}
//关闭注册表
RegCloseKey(m_hKey);
return TRUE;
}
BOOL CRegister::IsInstalled() //读注册表,判断leavetime 键是否存在
{
HKEY m_hKey;
DWORD dwDisposition;
datatime t;
DWORD dwType;
DWORD dwLen;
LONG ret=RegCreateKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\TimeLimit",0L,
NULL,REG_OPTION_VOLATILE,KEY_ALL_ACCESS,NULL,&m_hKey,&dwDisposition);
if (ret!=ERROR_SUCCESS)
{
return false;
}
ret=RegQueryValueEx(m_hKey,"leavetime",0L,&dwType,(unsigned char*)&t.leavetime,&dwLen);
if (ret!=ERROR_SUCCESS)
return false;
else
return true;
RegCloseKey(m_hKey);
}
BOOL CRegister::Testdata()
{
datatime t,s;
if(!GetlimitTime(t))
{
CFileread(s);
SetLimitTime(s);
}
else
{
if (!Filetest())
{
GetlimitTime(t);
CFilewrite(t);
}
else
{
CFileread(s);
if (!(t.leavetime==s.leavetime)&&(t.lasttime==s.lasttime)&&(t.usetime==s.usetime))
SetLimitTime(s);
}
}
return true;
}
BOOL CRegister::CFileread(datatime &t)
{
char str[256];
GetSystemDirectory(str,256);
CFile fd((CString)str+"\\datajk.dll",CFile::modeReadWrite);
if(fd.Read(&t,sizeof(struct datatime))==NULL)
return false;
fd.Close();
return TRUE;
}
void CRegister::CFilewrite(datatime t)
{
char str[256];
GetSystemDirectory(str,256);
CFile fd((CString)str+"\\datajk.dll",CFile::modeReadWrite|CFile::modeCreate);
fd.Write(&t,sizeof(struct datatime));
fd.Close();
}
void CRegister::Endfunction()
{
datatime t;
time_t overtime;
Testdata();
GetlimitTime(t);
overtime=GetCurrentTime();
t.usetime=(int)(difftime(overtime,t.lasttime)/1000);
if (t.usetime<0)
{
t.usetime=3600;
}
t.leavetime-=t.usetime;
SetLimitTime(t);
CFilewrite(t);
}
BOOL CRegister::Startfunction()
{
datatime t;
CString str;
if (!IsInstalled()) //查询注册表是否存在
{
if (!Filetest()) //没有注册表,查询文件
{
t.leavetime=total;
t.lasttime=0;
t.usetime=0;
CFilewrite(t);
}
else
{
CFileread(t);
}
SetLimitTime(t);
}
Testdata();
GetlimitTime(t);
if (t.leavetime<=1)
{
AfxMessageBox("试用版已到期,请联系购买一个正版使用",MB_OK);
return false;
}
else
{
t.lasttime=GetCurrentTime();
SetLimitTime(t);
CFilewrite(t);
str.Format("你使用的是试用版%d天到期",t.leavetime/86400);//86400
AfxMessageBox(str);
return true;
}
}
BOOL CRegister::Filetest()
{
FILE *fp;
char str[256];
GetSystemDirectory(str,256);
if ((fp=fopen((CString)str+"\\datajk.dll","r"))==NULL)
return false;
else
{
fclose(fp);
return true;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -