📄 reg.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 + -