📄 registry.cpp
字号:
// Registry.cpp : implementation file
//
#include "stdafx.h"
#include "Registry.h"
#include <assert.h>
/////////////////////////////////////////////////////////////////////////////
// CRegistry
CRegistry::CRegistry(HKEY hKey)
{
m_hKey=hKey;
if( hKey == HKEY_LOCAL_MACHINE)
m_strRegRoot = "HKEY_LOCAL_MACHINE";
}
CRegistry::~CRegistry()
{
Close();
}
/////////////////////////////////////////////////////////////////////////////
// CRegistry Functions
BOOL CRegistry::CreateKey(LPCTSTR lpSubKey)
{
assert(m_hKey);
assert(lpSubKey);
HKEY hKey;
DWORD dw;
long lReturn=RegCreateKeyEx(m_hKey,lpSubKey,0L,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,&dw);
if(lReturn==ERROR_SUCCESS)
{
m_hKey=hKey;
m_strCurrentKey += lpSubKey;
m_strCurrentKey += "\\";
return TRUE;
}
return FALSE;
}
BOOL CRegistry::Open(LPCTSTR lpSubKey,BOOL bCreate)
{
assert(m_hKey);
assert(lpSubKey);
HKEY hKey;
long lReturn=RegOpenKeyEx(m_hKey,lpSubKey,0L,KEY_ALL_ACCESS,&hKey);
if(lReturn==ERROR_SUCCESS)
{
m_hKey=hKey;
m_strCurrentKey += lpSubKey;
m_strCurrentKey += "\\";
return TRUE;
}
else if(bCreate)
{
return CreateKey(lpSubKey);
}
return FALSE;
}
void CRegistry::Close()
{
if(m_hKey)
{
RegCloseKey(m_hKey);
m_hKey=NULL;
m_strCurrentKey.Empty();
m_strRegRoot.Empty();
}
}
BOOL CRegistry::DeleteValue(LPCTSTR lpValueName)
{
assert(m_hKey);
assert(lpValueName);
long lReturn=RegDeleteValue(m_hKey,lpValueName);
if(lReturn==ERROR_SUCCESS)
return TRUE;
return FALSE;
}
BOOL CRegistry::DeleteKey(HKEY hKey, LPCTSTR lpSubKey)
{
assert(hKey);
assert(lpSubKey);
long lReturn=RegDeleteValue(hKey,lpSubKey);
if(lReturn==ERROR_SUCCESS)
return TRUE;
return FALSE;
}
//写入DWORD值
BOOL CRegistry::SetDWORDValue(LPCTSTR lpSubKey, DWORD dwVal)
{
assert(m_hKey);
assert(lpSubKey);
long lReturn=RegSetValueEx(m_hKey,lpSubKey,0L,REG_DWORD,(const BYTE *) &dwVal,sizeof(DWORD));
if(lReturn==ERROR_SUCCESS)
return TRUE;
return FALSE;
}
//写入字符串值
BOOL CRegistry::SetKeyValue(LPCTSTR lpValueName, LPCTSTR lpValue)
{
assert(m_hKey);
assert(lpValueName);
assert(lpValue);
long lReturn=RegSetValueEx(m_hKey,lpValueName,0L,REG_SZ,(const BYTE *) lpValue,strlen(lpValue)+1);
if(lReturn==ERROR_SUCCESS)
return TRUE;
return FALSE;
}
int CRegistry::Read(LPCTSTR lpValueName,int nDefault)
{
assert(m_hKey);
assert(lpValueName);
DWORD dwType;
DWORD dwSize=sizeof(DWORD);
DWORD dwDest;
long lReturn=RegQueryValueEx(m_hKey,lpValueName,NULL,&dwType,(BYTE *)&dwDest,&dwSize);
if(lReturn==ERROR_SUCCESS)
{
return (int)dwDest;
}
return nDefault;
}
BOOL CRegistry::Read(LPCTSTR lpValueName, DWORD* pdwVal)
{
assert(m_hKey);
assert(lpValueName);
assert(pdwVal);
DWORD dwType;
DWORD dwSize=sizeof(DWORD);
DWORD dwDest;
long lReturn=RegQueryValueEx(m_hKey,lpValueName,NULL,&dwType,(BYTE *)&dwDest,&dwSize);
if(lReturn==ERROR_SUCCESS)
{
*pdwVal=dwDest;
return TRUE;
}
return FALSE;
}
BOOL CRegistry::Read(LPCTSTR lpValueName, tstring* lpVal)
{
assert(m_hKey);
assert(lpValueName);
assert(lpVal);
DWORD dwType;
DWORD dwSize=200;
char szString[2550];
long lReturn=RegQueryValueEx(m_hKey,lpValueName,NULL,&dwType,(BYTE *)szString,&dwSize);
if(lReturn==ERROR_SUCCESS)
{
*lpVal=szString;
return TRUE;
}
return FALSE;
}
BOOL CRegistry::RestoreKey(LPCTSTR lpFileName)
{
assert(m_hKey);
assert(lpFileName);
long lReturn=RegRestoreKey(m_hKey,lpFileName,REG_WHOLE_HIVE_VOLATILE);
if(lReturn==ERROR_SUCCESS)
return TRUE;
return FALSE;
}
BOOL CRegistry::SaveKey(LPCTSTR lpFileName)
{
assert(m_hKey);
assert(lpFileName);
long lReturn=RegSaveKey(m_hKey,lpFileName,NULL);
if(lReturn==ERROR_SUCCESS)
return TRUE;
return FALSE;
}
//BOOL CRegistry::EnumKey(CStringList &strList)
//{
// assert(m_hKey);
// char buf[MAX_PATH] = { 0 };
// DWORD dwIndex = 0;
// CString strListNote;
// long lReturn = RegEnumKey (m_hKey,dwIndex,buf,MAX_PATH);
// while (lReturn == ERROR_SUCCESS)
// {
// strListNote = buf;
// strList.AddTail(strListNote);
// lReturn = RegEnumKey(m_hKey,++dwIndex,buf,MAX_PATH);
// }
// return TRUE;
//}
BOOL CRegistry::UpLevelKey()
{
assert(m_hKey);
tstring strRoot = m_strRegRoot;
tstring strCurrentKey = m_strCurrentKey;
Close();
if( strRoot == "HKEY_LOCAL_MACHINE")
m_hKey = HKEY_LOCAL_MACHINE;
//if strRoot == "HKEY_CLASSES_ROOT"
//m_hKey = HKEY_CLASSES_ROOT; and so on.
tstring strUpLevel = strCurrentKey.Left(strCurrentKey.ReverseFind('\\'));
return Open(strUpLevel);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -