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

📄 reg.cpp

📁 用户管理系统
💻 CPP
字号:
// Reg.cpp: implementation of the CReg class.
// 1)初始化系统
// 2)管理注册表信息
// 2)初始化子目录结构
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Reg.h"
//#include "ctrl_srvr9.h"
//#include "CEsmtp\CMimeString.H"
//#include "MD5Checksum.H"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CReg::CReg()
{
	m_sPassword = "";
    m_sEmailEnabled = "FALSE";
    m_sEmailServer = "Smtp.21cn.com";
    m_sEmailTo = "PeSrvr@21cn.com";
    m_sEmailFrom = "PeSrvr@21cn.com";
	m_sEmailText = "";
	m_sEmailUser = "PeSrvr";
	m_sEmailPW = "";
	m_sAutoRun = "SERVER"; //SERVER|NORMAL|NO
	m_sAutoRunOld = "NO"; //SERVER|NORMAL|NO
	m_sAutoHideEnabled = "TRUE";
	m_sRegisterID = "";
	m_sRegName = "";
	m_sCreateDate = "";
    m_sServerPort = "";
	m_sNote = "";
	
	m_nServerPort = 9771;
	m_bRegister = FALSE;
}

CReg::~CReg()
{

}

//删除自动起动
/*
BOOL CReg::DelAutoRun(CString sType)
{
	char * strRegName[6] = {"SOFTWARE", 
				"Microsoft", 
				"Windows", 
				"CurrentVersion",
				"Run",
				"RunServices"};
	HKEY	hKey = HKEY_LOCAL_MACHINE;
	HKEY	hSubKey;
	int	indx = 0;
	long	lRC;
//	char	svBuffer[256];
	DWORD	dwSize = 256;

    if(sType == "NO" ) return TRUE;
	while(1) 
	{
		lRC = RegOpenKeyEx(hKey, strRegName[indx], 0, 
					KEY_READ | KEY_WRITE, &hSubKey) ;
		if(lRC != ERROR_SUCCESS) 
		{
			RegCloseKey(hKey);
			return FALSE;
		}
		hKey = hSubKey;
		indx++;
		if (indx >= 5 ) break;
		if (indx == 4 && sType == "SERVER") ////服务器方式
			indx++;
	}
//	lRC = RegQueryValueEx(hKey, "PeSrvr", NULL, NULL, 
//				(BYTE *)svBuffer, &dwSize);
	lRC = RegDeleteValue(hKey, "PeSrvr");
	RegCloseKey(hKey);
	return TRUE;
}

//删除自动起动
BOOL CReg::DelAutoRun()
{
	char * strRegName[6] = {"SOFTWARE", 
				"Microsoft", 
				"Windows", 
				"CurrentVersion",
				"Run",
				"RunServices"};
	HKEY	hKey = HKEY_LOCAL_MACHINE;
	HKEY	hSubKey;
	int	indx = 0;
	long	lRC;
//	DWORD	dwSize = 256;

 for (int i = 0; i < 2; i++)
 {
	while(1)
	{
		lRC = RegOpenKeyEx(hKey, strRegName[indx], 0, 
					KEY_READ | KEY_WRITE, &hSubKey) ;
		if(lRC != ERROR_SUCCESS) 
		{
			RegCloseKey(hKey);
			return FALSE;
		}
		hKey = hSubKey;
		indx++;
		if (indx >= 5 ) break;
		if (indx == 4 && i == 0)
			indx++;
	}
	 lRC = RegDeleteValue(hKey, "APeSrvr");
	 RegCloseKey(hKey);
	}
	return TRUE;
}

//读注册表
BOOL CReg::ReadReg()
{
    HKEY	hKey = HKEY_CURRENT_CONFIG;
    HKEY	hSubKey;
	long	lRC;
	char	svBuffer[256];
	DWORD	dwSize = 255;
	CString stmp;
    lRC = RegOpenKeyEx(hKey, "APeSrvr", 0, 
					KEY_READ | KEY_WRITE, &hSubKey) ;
    if (lRC != ERROR_SUCCESS) return FALSE;
    
         dwSize = 255;
 	     if (RegQueryValueEx(hSubKey, "ServerPort", NULL, NULL, 
			(BYTE *)svBuffer, &dwSize) == ERROR_SUCCESS)
		 {
		  m_sServerPort = svBuffer;
		  m_nServerPort = atoi(svBuffer);
		 }
         dwSize = 255;
 	     if (RegQueryValueEx(hSubKey, "AutoHideEnabled", NULL, NULL, 
			(BYTE *)svBuffer, &dwSize) == ERROR_SUCCESS)
		  m_sAutoHideEnabled = svBuffer;
         dwSize = 255;
 	     if (RegQueryValueEx(hSubKey, "AutoRun", NULL, NULL, 
			(BYTE *)svBuffer, &dwSize) == ERROR_SUCCESS)
		 {
          m_sAutoRun  = svBuffer;
		  m_sAutoRunOld = m_sAutoRun;
         }
         dwSize = 255;
  	     if (RegQueryValueEx(hSubKey, "EmailEnabled", NULL, NULL, 
			(BYTE *)svBuffer, &dwSize) == ERROR_SUCCESS)
          m_sEmailEnabled = svBuffer;
         dwSize = 255;
  	     if (RegQueryValueEx(hSubKey, "EmailFrom", NULL, NULL, 
			(BYTE *)svBuffer, &dwSize) == ERROR_SUCCESS)
          m_sEmailFrom = svBuffer;
//解密
         dwSize = 255;
  	     if (RegQueryValueEx(hSubKey, "EmailPW", NULL, NULL, 
			(BYTE *)svBuffer, &dwSize) == ERROR_SUCCESS)
		 {
          stmp = svBuffer;
          CMimeString sDecode1( CMimeString::DECODING, CMimeString::BASE64, stmp);
          m_sEmailPW = sDecode1;
		 }
         dwSize = 255;
  	     if (RegQueryValueEx(hSubKey, "EmailServer", NULL, NULL, 
			(BYTE *)svBuffer, &dwSize) == ERROR_SUCCESS)
          m_sEmailServer = svBuffer;
         dwSize = 255;
  	     if (RegQueryValueEx(hSubKey, "EmailText", NULL, NULL, 
			(BYTE *)svBuffer, &dwSize) == ERROR_SUCCESS)
          m_sEmailText = svBuffer;
         dwSize = 255;
  	     if (RegQueryValueEx(hSubKey, "EmailTo", NULL, NULL, 
			(BYTE *)svBuffer, &dwSize) == ERROR_SUCCESS)
          m_sEmailTo = svBuffer;
         dwSize = 255;
  	     if (RegQueryValueEx(hSubKey, "EmailUser", NULL, NULL, 
			(BYTE *)svBuffer, &dwSize) == ERROR_SUCCESS)
          m_sEmailUser = svBuffer;
//解密
         dwSize = 255;
  	     if (RegQueryValueEx(hSubKey, "Password", NULL, NULL, 
			(BYTE *)svBuffer, &dwSize) == ERROR_SUCCESS)
		 {
           stmp = svBuffer;
           CMimeString sDecode1( CMimeString::DECODING, CMimeString::BASE64, stmp);
		   m_sPassword = sDecode1;
		 }
//解密
         dwSize = 255;
  	     if (RegQueryValueEx(hSubKey, "RegisterID", NULL, NULL, 
			(BYTE *)svBuffer, &dwSize) == ERROR_SUCCESS)
		 {
          stmp = svBuffer;
          CMimeString sDecode1( CMimeString::DECODING, CMimeString::BASE64, stmp);
          m_sRegisterID = sDecode1;
		 }
         dwSize = 255;
  	     if (RegQueryValueEx(hSubKey, "RegName", NULL, NULL, 
			(BYTE *)svBuffer, &dwSize) == ERROR_SUCCESS)
          m_sRegName = svBuffer;
         dwSize = 255;
  	     if (RegQueryValueEx(hSubKey, "CreateDate", NULL, NULL, 
			(BYTE *)svBuffer, &dwSize) == ERROR_SUCCESS)
          m_sCreateDate = svBuffer;
         dwSize = 255;
  	     if (RegQueryValueEx(hSubKey, "", NULL, NULL, 
			(BYTE *)svBuffer, &dwSize) == ERROR_SUCCESS)
          m_sNote = svBuffer;
		RegCloseKey(hKey);
		return TRUE;
}

//建立自动起动
BOOL CReg::CreAutoRun(CString sType)
{	
	char * strRegName[6] = {"SOFTWARE", 
				"Microsoft", 
				"Windows", 
				"CurrentVersion",
				"Run",
				"RunServices"};
	HKEY	hKey = HKEY_LOCAL_MACHINE;
	HKEY	hSubKey;
	int	indx = 0;
	long	lRC;
//	char	svBuffer[256];
	DWORD	dwSize = 256;

    
	CString		strFile;
	CString		strEndFile;
	char		szFile[256];


//////// 取系统目录/文件名/考贝文件 
    HMODULE hInstance;
	hInstance = (HMODULE) AfxGetInstanceHandle();
	GetModuleFileName (hInstance,szFile,255);
	strFile = szFile;
	GetSystemDirectory (szFile,255);
	strEndFile = szFile + CString("\\PeSrvr.exe");

    if(sType == "NO" ) return TRUE;
	while(1) 
	{
		lRC = RegOpenKeyEx(hKey, strRegName[indx], 0, 
					KEY_READ | KEY_WRITE, &hSubKey) ;
		if(lRC != ERROR_SUCCESS) 
		{
			RegCloseKey(hKey);
			return FALSE;
		}
		hKey = hSubKey;
		indx++;
		if (indx >= 5 ) break;
//服务器方式
		if (indx == 4 && sType == "SERVER")
			indx++;
	}
	if (lRC == ERROR_SUCCESS)
	{
	    CopyFile(strFile,strEndFile,FALSE);
		strEndFile += "  /A";
		lRC = RegSetValueEx (hKey, "APeSrvr", 0, REG_SZ, 
					(BYTE *)strEndFile.GetBuffer(256),strEndFile.GetLength());
	}
   RegCloseKey(hKey);
   if (lRC == ERROR_SUCCESS)
           return TRUE;        
   return FALSE;
}
//修改密码
BOOL CReg::ModifyPassword(CString sNew)
{
//Install password
	HKEY	hKey = HKEY_CURRENT_CONFIG;
	HKEY	hSubKey;
	char	svBuffer[256];
	DWORD dwSize;
	CString stmp;
    if (RegCreateKey(hKey, "APeSrvr", &hSubKey) == ERROR_SUCCESS) 
	 {
        CMimeString sEncode2(CMimeString::ENCODING, CMimeString::BASE64, sNew);
		stmp = sEncode2;
        if(RegSetValueEx(hSubKey,"Password",0, REG_SZ, 
					  (unsigned char *)(LPCSTR)stmp,
					  stmp.GetLength()) == ERROR_SUCCESS)
		{
  		  RegCloseKey(hSubKey);
		  m_sPassword = sNew;
		  return TRUE;
		}
		else
		{
  		  RegCloseKey(hSubKey);
		  return FALSE;
		}
		   
	}
	return FALSE;
}
//写注册表
BOOL CReg::WriteReg()
{
//Install password
	HKEY	hKey = HKEY_CURRENT_CONFIG;
	HKEY	hSubKey;
	char	svBuffer[256];
	DWORD dwSize;
	CString stmp;
    if (RegCreateKey(hKey, "APeSrvr", &hSubKey) == ERROR_SUCCESS) 
		 {
        itoa(m_nServerPort, svBuffer,10);
		m_sServerPort = svBuffer;
        RegSetValueEx(hSubKey,"ServerPort",0, REG_SZ, 
					  (unsigned char *)(LPCSTR)m_sServerPort,m_sServerPort.GetLength());
        RegSetValueEx(hSubKey,"AutoHideEnabled",0, REG_SZ, 
					  (unsigned char *)(LPCSTR)m_sAutoHideEnabled,m_sAutoHideEnabled.GetLength());
        RegSetValueEx(hSubKey,"AutoRun",0, REG_SZ, 
					  (unsigned char *)(LPCSTR)m_sAutoRun,m_sAutoRun.GetLength());
        RegSetValueEx(hSubKey,"EmailEnabled",0, REG_SZ, 
					  (unsigned char *)(LPCSTR)m_sEmailEnabled,m_sEmailEnabled.GetLength());
        RegSetValueEx(hSubKey,"EmailFrom",0, REG_SZ, 
					  (unsigned char *)(LPCSTR)m_sEmailFrom,m_sEmailFrom.GetLength());
//加密  
        CMimeString sEncode1(CMimeString::ENCODING, CMimeString::BASE64, m_sEmailPW);
		stmp = sEncode1;
        RegSetValueEx(hSubKey,"EmailPW",0, REG_SZ, 
					  (unsigned char *)(LPCSTR)stmp, stmp.GetLength());
        RegSetValueEx(hSubKey,"EmailServer",0, REG_SZ, 
					  (unsigned char *)(LPCSTR)m_sEmailServer,m_sEmailServer.GetLength());
        RegSetValueEx(hSubKey,"EmailText",0, REG_SZ, 
					  (unsigned char *)(LPCSTR)m_sEmailText,m_sEmailText.GetLength());
        RegSetValueEx(hSubKey,"EmailTo",0, REG_SZ, 
					  (unsigned char *)(LPCSTR)m_sEmailTo,m_sEmailTo.GetLength());
        RegSetValueEx(hSubKey,"EmailUser",0, REG_SZ, 
					  (unsigned char *)(LPCSTR)m_sEmailUser,m_sEmailUser.GetLength());
//加密
        CMimeString sEncode2(CMimeString::ENCODING, CMimeString::BASE64, m_sPassword);
		stmp = sEncode2;
        RegSetValueEx(hSubKey,"Password",0, REG_SZ, 
					  (unsigned char *)(LPCSTR)stmp,stmp.GetLength());
//加密
        CMimeString sEncode3(CMimeString::ENCODING, CMimeString::BASE64, m_sRegisterID);
		stmp = sEncode3;
        RegSetValueEx(hSubKey,"RegisterID",0, REG_SZ, 
					  (unsigned char *)(LPCSTR)stmp,stmp.GetLength());
//没有创建时间,主动生成
 	    if (RegQueryValueEx(hSubKey, "CreateDate", NULL, NULL, 
			(BYTE *)svBuffer, &dwSize) != ERROR_SUCCESS)
		{
			CTime now = CTime::GetCurrentTime();
		   m_sCreateDate = now.Format("%Y-%m-%d"); 
           RegSetValueEx(hSubKey,"CreateDate",0, REG_SZ, 
					  (unsigned char *)(LPCSTR)m_sCreateDate,m_sCreateDate.GetLength());
		  
		}
//写入说明NOTE
        RegSetValueEx(hSubKey,"",0, REG_SZ, 
					  (unsigned char *)(LPCSTR)m_sNote,m_sNote.GetLength());
  		RegCloseKey(hSubKey);
//写入自动启动
		if(m_sAutoRun != m_sAutoRunOld)
		{
         //if(!DelAutoRun(m_sAutoRunOld)) return false;
         DelAutoRun();
		 if(!CreAutoRun(m_sAutoRun)) return false;
         m_sAutoRunOld = m_sAutoRun;
		}
		 return true;
	}

 return false;

}
//导入系统配置
BOOL CReg::Login()
{
   CString strMD, strEn;
   if (!ReadReg()) return FALSE;
   CMimeString sEncode1( CMimeString::ENCODING, CMimeString::BASE64, m_sRegName);
   strEn = sEncode1;
   strMD = CMD5Checksum::GetMD5((BYTE*)(const char*)strEn, strEn.GetLength());
   if (strMD == m_sRegisterID)
	   m_bRegister = true;
   else
	   m_bRegister = false;
   return TRUE;
}
//注册
BOOL CReg::Register(CString sName, CString sID)
{
   	HKEY	hKey = HKEY_CURRENT_CONFIG;
	HKEY	hSubKey;
//	char	svBuffer[256];
//	DWORD dwSize;
	long lRC;
    CString strMD, strEn, stmp;
 
  if (sName.GetLength() < 5 || sID.GetLength() < 5) return FALSE;
  CMimeString sEncode1( CMimeString::ENCODING, CMimeString::BASE64, sName);
  strEn = sEncode1;
  strMD = CMD5Checksum::GetMD5((BYTE*)(const char*)strEn, strEn.GetLength());
  if (strMD != sID) return FALSE;

  if (RegCreateKey(hKey, "APeSrvr", &hSubKey) == ERROR_SUCCESS) 
		 {
//加密
        CMimeString sEncode3(CMimeString::ENCODING, CMimeString::BASE64, sID);
		stmp = sEncode3;
        lRC =  RegSetValueEx(hSubKey,"RegisterID",0, REG_SZ, 
					  (unsigned char *)(LPCSTR)stmp,stmp.GetLength());
		if (lRC != ERROR_SUCCESS) 
		{
  		    RegCloseKey(hSubKey);
			return FALSE;
		}
        RegSetValueEx(hSubKey,"RegName",0, REG_SZ, 
					  (unsigned char *)(LPCSTR)sName,sName.GetLength());
		if (lRC != ERROR_SUCCESS) 
		{
  		    RegCloseKey(hSubKey);
			return FALSE;
		}
  		RegCloseKey(hSubKey);
		m_sRegisterID = sID;
		m_sRegName = sName;
		m_bRegister = true;
		return TRUE;
	}
  	return FALSE;
}
*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -