⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 register.cpp

📁 加密 加密 加密 加密 加密 加密
💻 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 + -