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

📄 reg.cpp

📁 wince 系统时间、音量及背光、触摸屏校正以及进程查看大集合r
💻 CPP
字号:
#include "StdAfx.h"
#include "Reg.h"

//=======================================================================
//Macro define
#define MyFree(p)            { if(p) LocalFree(p); }
//=======================================================================
/**///////////////////////////////////////////////////////////////////////
// Construction/Destruction
/**///////////////////////////////////////////////////////////////////////


CReg::CReg(void)

{
	m_hKey = NULL;
	m_Index = 0;
	m_lpbValue = NULL;
}

CReg::~CReg(void)
{
	if(m_hKey)
	{
			RegCloseKey(m_hKey);
	}
	MyFree(m_lpbValue);
}

CReg::CReg(HKEY hkRoot, LPCTSTR pszKey)
{
	m_hKey = NULL;
	m_Index = 0;
	m_lpbValue = NULL;
	Open(hkRoot, pszKey);
}

CReg::operator HKEY()
{
	return m_hKey;
}

bool CReg::DeleteKey(LPCTSTR szName)
{
	if(!m_hKey) 
	{
			return FALSE;
	}

	return ERROR_SUCCESS == RegDeleteKey(m_hKey, szName);
}

bool CReg::DeleteValue(LPCTSTR szName)
{
	if(!m_hKey) 
   {
			return FALSE;
	}
	//
	return ERROR_SUCCESS == RegDeleteValue(m_hKey, szName);
}

bool CReg::SetMultiSZ(LPCTSTR szName , LPCTSTR lpszValue , DWORD dwLen)
{
 return ERROR_SUCCESS == RegSetValueEx(m_hKey, szName, 0, REG_MULTI_SZ, (LPBYTE)lpszValue, sizeof(TCHAR)*dwLen);
}

bool CReg::SetBinary(LPCTSTR szName , LPBYTE lpbValue , DWORD dwLen)
{
	if(!m_hKey) 
	{
			return FALSE;
	}

	return ERROR_SUCCESS == RegSetValueEx(m_hKey, szName, 0, REG_BINARY, lpbValue, dwLen);
}

bool CReg::SetDW(LPCTSTR szName , DWORD dwValue)
{
	if(!m_hKey) 
	{
			return FALSE;
	}

	return ERROR_SUCCESS==RegSetValueEx(m_hKey, szName, 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(DWORD));
}


bool CReg::SetSZ(LPCTSTR szName , LPCTSTR szValue,DWORD dwLen)
{
	if(!m_hKey) 
	{
			return FALSE;
	}
		return ERROR_SUCCESS == RegSetValueEx(m_hKey, szName, 0, REG_SZ, (LPBYTE)szValue, sizeof(TCHAR)*dwLen);
}

bool CReg::SetSZ(LPCTSTR szName , LPCTSTR szValue)
{
	 return SetSZ(szName, szValue, 1+lstrlen(szValue));
}

DWORD CReg::GetValueDW(LPCTSTR szName , DWORD dwDefault)
{
	if(!m_hKey) 
	{
		return FALSE;
	}
	DWORD dwValue = dwDefault;
	DWORD dwLen = sizeof(DWORD);
	DWORD dwType;
	if(ERROR_SUCCESS == RegQueryValueEx(m_hKey, szName, NULL, &dwType, (LPBYTE)&dwValue, &dwLen))
	{
		if(dwType != REG_DWORD)
		{
			dwValue = dwDefault;
		}
	}
	else
	{
		dwValue = dwDefault;
	}

	return dwValue;
}

LPCTSTR CReg::GetValueSZ(LPCTSTR szName)
{
	 return 0;
}

LPBYTE CReg::GetValueBinary(LPCTSTR szName)
{
	 return (LPBYTE)GetValueSZ(szName);
}

DWORD CReg::GetValueBinary(LPCTSTR szName , LPBYTE lpbValue , DWORD dwLen)
{
	if(!m_hKey) 
		{
			return FALSE;
	}

	DWORD dwLenWant = dwLen;
	if(ERROR_SUCCESS == RegQueryValueEx(m_hKey, szName, NULL, NULL, lpbValue, &dwLen))
	{
			return dwLen;
	}
	else
	{
			return 0;
	}
}

bool CReg::GetValueSZ(LPCTSTR szName , LPCTSTR szValue , DWORD dwLen)
{
	if(!m_hKey)
	{
			return FALSE;
	}

	dwLen *= sizeof(TCHAR); // convert length in chars to bytes

	DWORD dwType ;
	if(ERROR_SUCCESS == RegQueryValueEx(m_hKey, szName, NULL, &dwType, (LPBYTE)szValue, &dwLen))
	{
		if(REG_SZ != dwType)
		{
			dwLen = 0;
			return FALSE;
		}
		else
		{
			dwLen /= sizeof(TCHAR);
		}

	}
	else
	{
		dwLen = 0;
	}

	return dwLen;
}

bool CReg::EnumValue(LPTSTR pszName , DWORD dwLenName , LPTSTR lpValue , DWORD dwLenValue)
{
	DWORD dwType;

	if(!m_hKey) 
	{
		return FALSE;
	}

	dwLenValue *= sizeof(BYTE); // convert length in number to bytes

	return ERROR_SUCCESS == RegEnumValue(m_hKey, m_Index++, pszName, &dwLenName, NULL, &dwType, (LPBYTE)lpValue, &dwLenValue);
}

bool CReg::EnumKey(LPTSTR psz , DWORD dwLen)
{
	if(!m_hKey)
	{
			return FALSE;
	}

	return ERROR_SUCCESS == RegEnumKeyEx(m_hKey, m_Index++, psz, &dwLen, NULL, NULL, NULL, NULL);
}

BOOL CReg::IsOK(void)
{
	return m_hKey != NULL;
}

void CReg::Reset(void)
{
	if(m_hKey)
	{
			RegCloseKey(m_hKey); 
	}
	MyFree(m_lpbValue);
	m_hKey = NULL;
	m_Index = 0;
	m_lpbValue = NULL;
}

bool CReg::Open(HKEY hkRoot , LPCTSTR pszKey , REGSAM sam)
{
	return ERROR_SUCCESS == RegOpenKeyEx(hkRoot, pszKey, 0, sam, &m_hKey);

}

bool CReg::Create(HKEY hkRoot , LPCTSTR pszKey)
{
	DWORD dwDisp;
	return ERROR_SUCCESS == RegCreateKeyEx(hkRoot, pszKey, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &m_hKey, &dwDisp);
}

⌨️ 快捷键说明

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